我有表2個SQL索引,等之間的區別:什麼是2 SQL索引,同一列,但差異爲了
- idx_Inventory_One(供應商ID,PARTID)
- idx_Inventory_Two(PARTID,供應商ID)
那麼,他們之間有什麼區別,我應該刪除任何一個 ,我可以有他們兩個?
我有表2個SQL索引,等之間的區別:什麼是2 SQL索引,同一列,但差異爲了
那麼,他們之間有什麼區別,我應該刪除任何一個 ,我可以有他們兩個?
索引無損害。它們花費一些內存,並在插入,更新和刪除時花費額外的時間,但這通常是可以忽略的。
索引中列的順序可以有所不同。
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.
這真的很乾淨有用的答案。謝謝! –
這篇文章沒有顯示您的部分研究工作。去做一些Google搜索,瞭解索引的功能以及列順序對查詢的影響。 – dfundako
@Siyual:這不是我的問題 –
@NgàiJin不,但它回答你的問題。 – Siyual