2011-03-09 47 views
1

你應該索引一個多對多的表,比如user_role,它有兩個字段(userId和RoleId)?你應該索引一個多對多的表嗎?

什麼樣的指數會是最好的?

+3

你通常會在這些表上有一個複合主鍵,所以真正唯一的問題是使它成爲'userId,RoleId',反之亦然,或者兩者兼有。 – 2011-03-09 20:55:11

+0

@Martin:添加這些索引最快的方法是什麼?我有一堆這些many-2_many表更新... – kacalapy 2011-03-09 21:05:38

+0

我會先看看用法,看看是否有其他索引是必要的。除非你已經知道哪些人會流量很大。有關更多信息,請參閱我的答案中的鏈接。 :-P – richard 2011-03-09 21:08:48

回答

2

這取決於。如果有很多用戶/角色組合(數以萬計或更多),並且您正在查詢這些信息很多,或者需要特別高效,那麼是的。

如果沒有很多的記錄,或者你不介意這是非常高性能的,或者不經常用它,那麼很有可能是否定的。

對於使用部分,SQL Server可以幫助你決定這是不是使用足以保證一個指標。有關指導,請參閱here

而且,正如馬丁指出,如果你定義了用戶/角色在這個表的主鍵,你已經有一個索引,聚集索引,對列的組合體。

0

指標將幫助查詢表更快,它真的沒有任何關係與關係本身。你的查詢很慢嗎?如果是這樣,那麼添加一個索引將會有所幫助。它會爲插入和更新語句增加一些開銷。

0

作爲一個規則,如果你在現場加入它是有它的指數是個好主意。

你的里程可以根據表的大小,該字段的選擇性(即,它有多少不同的值有)和您的更新比會發生變化/插入到選擇/尋道。

相關問題