clustered index

1) Keys: When to cluster a key?
2) Indexes: When to cluster an index?
3) Does Cluster on index improve performance?
4) Should all index be clustered?
robertkcAsked:
Who is Participating?
 
bull_riderConnect With a Mentor Commented:
Indexes are mainly used for faster retrival of the data from the table or view. Primary key is best candidate for creation of clustered key: reason all the values in Primary Key column would be unique. Also you can create clustered index on foreign key column of table which is used quite frequently in the join
condition and on the column which is used frequently in the where clause of the table.

Yes of course it increases performance in running queries which do not include DML statements. Indexes are costly in DML statements.

A table can have 1 clustered index and 249 non-clustered indexes.
Generally clustered index is ideal for the Primary Key and non-clustered indexes are ideal for columns which are used in sorting (the columns in Order By)

Hope this answers all your questions and let me know if you have any doubts in this explanation.
0
 
Aneesh RetnakaranDatabase AdministratorCommented:
refer few of these articles
http://www.simple-talk.com/sql/learn-sql-server/sql-server-index-basics/
http://beginner-sql-tutorial.com/sql-index.htm
http://www.sql-server-performance.com/articles/per/index_data_structures_p1.aspx

Usually the indexes, with some exceptions, will improve data retrival, but it can affect the INSERT operations
0
 
robertkcAuthor Commented:
Want unique AccountNumber and unique UserID.

Which is correct A or B.


A)
---
Create table dbo.Account (
 
etc...
 
constraint AK_KEY_1 unique (AccountNumber),
constraint AK_KEY_2 unique (UserID)
)
 
create unique index Index_1 on dbo.Account (
AccountNumber ASC
)
create unique index Index_2 on dbo.Account (
User ASC
)
 
 
B)
---
Create table dbo.Account (
 
etc...
constraint AK_KEY_1 unique (AccountNumber, UserID)
)
 
create unique index Index_1 on dbo.Account (
AccountNumber ASC,
UserID ASC
)

Open in new window

0
Cloud Class® Course: MCSA MCSE Windows Server 2012

This course teaches how to install and configure Windows Server 2012 R2.  It is the first step on your path to becoming a Microsoft Certified Solutions Expert (MCSE).

 
RiteshShahCommented:
well, you can create AccountNumber as Primary key and userid could be unique index. In your current scenario, I would like you to go for option B.
0
 
bull_riderCommented:
Same here as RiteshShah. I would also want you to opt for the option B. Hope you got a clear understanding of indexes from the xplanation given by all experts. Let me know if you have any more questions.
0
 
robertkcAuthor Commented:
why B? and not A?
0
 
RiteshShahCommented:
because composite is better than separate.
0
 
robertkcAuthor Commented:
1 problem, UserID can change. so it should not be a index?
0
 
RiteshShahCommented:
>>1 problem, UserID can change. so it should not be a index?<<

didn't get you 100% but all I can say is, there is no problem if you keep changing the value in indexed field.
0
 
dportasConnect With a Mentor Commented:
In both A and B you have created a unique constraint AND an index on the SAME columns. That isn't a good idea because a constraint creates an index anyway, so you have a redundant index which only harms insert/update/delete performance and wastes space.

I don't agree with the previous comment that "Primary key is best candidate for creation of clustered key". It depends a lot on what the primary key is. If new keys aren't inserted in any particular order then clustering on that key may result in lots of page splits and fragmentation, which is generally something you want to avoid. There is no simple rule for selecting a clustered index. You may need to weigh up a range of different factors. Some tables may be better off without a clustered index at all.
0
 
robertkcAuthor Commented:
sorry i meant to option B)
contains an alternative key userid which can change.

constraint AK_KEY_1 unique (AccountNumber, UserID)
)


OK?
0
 
RiteshShahCommented:
dportas,

>>I don't agree with the previous comment that "Primary key is best candidate for creation of clustered key"<<

I told him to create PK for Account Number which suppose to be unique, isn't it good idea to create PK on that field?
0
 
dportasCommented:
I wasn't commenting on what the PK should be in this case. I only meant that a primary key isn't necessarily the best choice for a clustered index.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.