2016-12-29 39 views
-1

我有表2個SQL索引,等之間的區別:什麼是2 SQL索引,同一列,但差異爲了

  1. idx_Inventory_One(供應商ID,PARTID)
  2. idx_Inventory_Two(PARTID,供應商ID)

那麼,他們之間有什麼區別,我應該刪除任何一個 ,我可以有他們兩個?

+0

這篇文章沒有顯示您的部分研究工作。去做一些Google搜索,瞭解索引的功能以及列順序對查詢的影響。 – dfundako

+0

@Siyual:這不是我的問題 –

+0

@NgàiJin不,但它回答你的問題。 – Siyual

回答

2

索引無損害。它們花費一些內存,並在插入,更新和刪除時花費額外的時間,但這通常是可以忽略的。

索引中列的順序可以有所不同。

select supplierid from mytable where partid = 5; 

這裏我們需要一個以partid開頭的索引以便找到想要的記錄。以supplierid開頭的索引對此查詢很少或沒有用處。

select partid from mytable where supplierid = 123; 

另一方面,在這裏,我們需要一個以supplierid開頭的索引,以便快速找到想要的記錄。

select * from mytable where partid = 5 and supplierid = 123; 

而對於這個查詢,任何索引都應該沒問題。根據列的選擇性,DBMS可能會選擇它認爲更合適的那個。這意味着如果有一個partid = 5的記錄,但只有10條記錄的supplierid = 123,它可能會使用以supplierid開頭的索引來獲取十條記錄,並檢查這十個記錄中哪些記錄有partid = 5,閱讀千人ID 5索引條目,以檢查他們是否supplierid = 123.

+0

這真的很乾淨有用的答案。謝謝! –

相關問題