Solved

clustered index

Posted on 2009-05-10
13
521 Views
Last Modified: 2013-11-11
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?
0
Comment
Question by:robertkc
  • 4
  • 4
  • 2
  • +2
13 Comments
 
LVL 75

Expert Comment

by:Aneesh Retnakaran
Comment Utility
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
 
LVL 6

Accepted Solution

by:
bull_rider earned 250 total points
Comment Utility
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
 

Author Comment

by:robertkc
Comment Utility
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
 
LVL 31

Expert Comment

by:RiteshShah
Comment Utility
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
 
LVL 6

Expert Comment

by:bull_rider
Comment Utility
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
 

Author Comment

by:robertkc
Comment Utility
why B? and not A?
0
What Is Threat Intelligence?

Threat intelligence is often discussed, but rarely understood. Starting with a precise definition, along with clear business goals, is essential.

 
LVL 31

Expert Comment

by:RiteshShah
Comment Utility
because composite is better than separate.
0
 

Author Comment

by:robertkc
Comment Utility
1 problem, UserID can change. so it should not be a index?
0
 
LVL 31

Expert Comment

by:RiteshShah
Comment Utility
>>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
 
LVL 22

Assisted Solution

by:dportas
dportas earned 250 total points
Comment Utility
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
 

Author Comment

by:robertkc
Comment Utility
sorry i meant to option B)
contains an alternative key userid which can change.

constraint AK_KEY_1 unique (AccountNumber, UserID)
)


OK?
0
 
LVL 31

Expert Comment

by:RiteshShah
Comment Utility
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
 
LVL 22

Expert Comment

by:dportas
Comment Utility
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

Featured Post

What is SQL Server and how does it work?

The purpose of this paper is to provide you background on SQL Server. It’s your self-study guide for learning fundamentals. It includes both the history of SQL and its technical basics. Concepts and definitions will form the solid foundation of your future DBA expertise.

Join & Write a Comment

In this article we will get to know that how can we recover deleted data if it happens accidently. We really can recover deleted rows if we know the time when data is deleted by using the transaction log.
From implementing a password expiration date, to datatype conversions and file export options, these are some useful settings I've found in Jasper Server.
Via a live example, show how to set up a backup for SQL Server using a Maintenance Plan and how to schedule the job into SQL Server Agent.
This video explains what a user managed backup is and shows how to take one, providing a couple of simple example scripts.

772 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now