2010-10-05 56 views
1

我有一個問題,你能幫我嗎? 我設計了一個web-cms數據庫,在User table_中包含:UserID,Username,Password,FirstName,LastName,...這是我必須創建索引的最佳選擇,用戶名或FirstName和姓?或者他們兩個? 默認情況下,UserID是用戶表的聚集索引,所以下一個索引必須是非聚簇的。但我不確定UserID是否是聚簇索引。由於這是一個網站,許多用戶可以每天註冊或刪除他們的帳戶,這是在UserID上創建聚集索引的好選擇嗎? 我正在使用sql server 2008web-cms數據庫的設計索引

+1

不確定我是否完全理解您的問題,但我很容易在用戶名,密碼字段組合中考慮非聚集索引,因爲這些是用戶登錄時要查詢的兩個字段。 創建非聚集索引[IndexName ] ON [表名]([用戶名],[密碼]) 順便說一句,您應該更改密碼列的名稱,因爲密碼是SQL中的保留字。此外,包含此列的任何查詢都不會顯示在Profiler中,因爲您正在使用「password」這個詞。 – Sage 2010-10-05 18:20:11

+0

另外,如果你不是專門查詢一列(EG:「Where [ColumnName] ='Boo'」),我也不會太擔心在該列上添加索引。 – Sage 2010-10-05 18:23:56

回答

1

您應該在通常按順序請求或包含大量不同值或用於查詢joion表的字段上定義聚簇索引。所以這通常意味着主鍵是一個很好的候選人。

非聚集索引適用於在查詢的where子句中使用的字段。

確定您創建索引的字段是非常特定於您的應用程序的東西。如果你有非常關鍵的查詢使用名字和姓氏字段,那麼我會說是的,否則它可能不值得。

就刪除他們賬戶的人而言,我相信您不打算從表中刪除該行。通常你只需將這些標記爲非活動狀態,因爲可能受此用戶影響的所有其他相關表發生了什麼變化?