|  | Posted by Erland Sommarskog on 06/27/07 21:27 
Richard (nassegris@gmail.com) writes:> One big problem (as i see it, and I'm by no means a SQL expert) is
 > that the db in question uses uniqueidentifier primary keys with
 > clustered indexes on those almost EVERYWHERE, and there is nothing I
 > can do to change that at the moment...Constructs like
 
 Clustered indexes on GUIDs requires a lot of skill in monitoring
 fragmentation.
 
 With the standard setup with a high fill factor, clustering on GUIDs is bad,
 because you get page splits and fragmentation galore.
 
 SQL Server MVP Greg Linwood suggested to me that clustering on GUIDs may
 still be good for INSERT performance, if you create the indexes with a low
 fill factor, say 50%. Now when you add new rows, there are good chance
 that there is a hole to plug into. When the table starts to fill up, you
 need to reindex again. But this strategy requires careful planning, and is
 nothing for the armchair DBA.
 
 If you are stuck with these clustered indexes, make you sure you set up
 a reindexing job that runs regularly, and you should probably aim at
 a lower fill factor. If not 50%, maybe 75-80%. It depends a bit how
 big the INSERT frequency is. And use DBCC SHOWCONTIG to monitor
 fragmentation.
 
 > FROM z
 > INNER JOIN a ON ..GUID = ..GUID
 > INNER JOIN b ON ..GUID = ..GUID
 > INNER JOIN c ON ..GUID = ..GUID
 > INNER JOIN d ON ..GUID = ..GUID
 > LEFT OUTER JOIN eON ..GUID = ..GUID
 > AND VERSION = (
 > SELECT MAX(VERSION) FROM f WHERE ..GUID = ..GUID)
 >
 > make the queries run painfuly slow.
 >
 > So the question is, is there ANYTHING I can do to optimize this type
 > of queries or is a redesign the only thing that would help?
 
 With the information you have posted, it's impossible to tell. But
 I would at least give defragmentation with DBCC DBREINDEX a chance
 first if DBCC SHOWCONTIG show horrendeous numbers.
 
 You could also consider adding covering non-clustered index on tables
 where only a few columns of many are involved in the query.
 
 
 --
 Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se
 
 Books Online for SQL Server 2005 at
 http://www.microsoft.com/technet/prodtechnol/sql/2005/downloads/books.mspx
 Books Online for SQL Server 2000 at
 http://www.microsoft.com/sql/prodinfo/previousversions/books.mspx
  Navigation: [Reply to this message] |