<p>I am working on a database that usually uses GUIDs as primary keys.</p>

<p>By default SQL Server places a clustered index on primary key columns. I understand that this is a silly idea for GUID columns, and that non-clustered indexes are better.</p>

<p>What do you think - should I get rid of all the clustered indexes and replace them with non-clustered indexes?</p>

<p>Why wouldn't SQL's performance tuner offer this as a recommendation?</p>

The problem with clustered indexes in a GUID field are that the GUIDs are random, so when a new record is inserted, a significant portion of the data on disk has to be moved to insert the records into the middle of the table.
However, with integer-based clustered indexes, the integers are normally sequential (like with an
```
IDENTITY
```
spec), so they just get added to the end an no data needs to be moved around.
On the other hand, clustered indexes are not always bad on GUIDs... it all depends upon the needs of your application.  If you need to be able to
```
SELECT
```
records quickly, then use a clustered index... the
```
INSERT
```
speed will suffer, but the
```
SELECT
```
speed will be improved.