0

考慮SQL表僱主。2列或多個索引上的SQL-1索引

列A - (int)唯一標識列。在選擇查詢中不用作where子句的一部分。

列B - (int)非唯一列。用於選擇查詢,作爲where子句的一部分。

哪個索引的下面的選擇是用於不屑數據庫表實現具有低維護性能良好更好

1)1簇,對列上的唯一,主鍵和1個非聚集在B列

索引

OR

2)1聚簇,在列B唯一的,主鍵,A(複合主鍵)

OR

3)1列上有1個非聚簇唯一主鍵和B列上有1個聚簇索引

也歡迎其他任何建議。在此先感謝

+0

列A將用在Where子句中。如果是,那麼第二個索引不會有幫助。訂單在索引中非常重要,並且有多列。 –

+0

什麼RDBMs?我認爲一些細節將是供應商特定的。 – 2017-06-16 09:55:58

+0

列A不會用作where子句的一部分 –

回答

0

與選項1一起去。
創建主鍵時總是針對最短的列。原因是此列將用於所有其他索引。另外我希望當你說身份時,你不是指隨機生成的價值,因爲這會傷害你的寫作表現。

+0

謝謝。是的,它是按順序遞增的。關於選項3? (編輯一段時間後)。 –

+0

通常,聚集索引是在ID列上生成的。理想情況下,這是獨一無二的。當你創建另一張表時,讓我們說僱員,那麼你很可能會參考僱主表中的ID列。而且由於您擁有聚集索引,您可以快速訪問特定員工的所有僱主數據。記住聚簇索引意味着數據根據該列進行物理排序。 –

0

選擇第一個,第二個將填充大空間,因爲它是聚集在一起並且很難陪伴,因爲它是複合的。要選擇第一個,你將有小指數,並且很容易伴隨