I am in a big mess and looking to see if I can get out of it. I have a database with all primary keys on tables defined on uniqueidentifier columns. This was kind of forced on us, giving 'security' as one of the reasons. The other I guess comparatively worthier reason is that some of the tables participate in replication.
I am reviewing the database and I feel one easily avoidable future performance bottleneck is to may add auto-increment bigint columns in all tables and make them primary keys (clustered). And somehow 'attach' the pk-fk relationships properly. But still retain the old columns for any future use.
Any suggestions/comments/donots in this regard? Ours is a c#/MSSQL Server R2/Linq environment.
EDIT: Looking at the comments, I realize I left out a few important details. All primary key Guid fields are Clustered and no I am not using newsequentialId (We use Linq to SQL, Primary keys are generated client side. With replication involved, we weren't sure of a way to correctly generate sequential ids from different client environments without conflicts).
My 'feeling' is due to the known fact that clustered index on a guid column will cause high degree of fragmentation and will only worsen the situation as the database grows.
Also, I am not really trying optimize right now, but trying to correct a bad design to avoid future headaches when database gets too large. Wanted to know if it is worth doing it now.
Helpful discussion also related to the issue here in this post, and another