2017-10-28 62 views
-1

我有3列id safeid branchid單獨列索引VS多

- 有些時候我需要safeid得到記錄的表,所以我有一個safeid (INDEX)

- 有些時候我需要branchid得到記錄,以便我有一個branchid (INDEX)

-有時我需要通過safeidbranchid在一起獲得記錄。所以問題是:我是否必須爲兩列創建另一個branchid_safeid (INDEX)以使選擇更快?

另一個問題

id列是一個唯一的主鍵..我是否需要創建id (INDEX)或主鍵是由自身的索引

回答

2

(我重新打開,因爲「DUP的」只回答了第二個問題)

問題1:WHERE safeid = 123 AND branchid = 234,你以任何順序需要INDEX(safeid, branchid)。更重要的是,有指標:

INDEX(safeid, branchid), -- for the pair, or for just `safeid` 
INDEX(branchid)   -- for branchid 

這將需要各3例你提到的照顧。

更多討論here

問題2:至於 「另一個問題」,在MySQL(InnoDB的特異性),所述PRIMARY KEY是 '集羣' 與數據;它是UNIQUE;它是一個INDEX。基本沒有理由複製PRIMARY KEY並增加單獨的UNIQUE KEYINDEX

這裏是 「DUP的」 先前引述:

Is the primary key automatically indexed in MySQL?
Do I need to create separate index for primary key of relational database table