為什麼要建聯合索引?

2021-10-06 14:54:04 字數 611 閱讀 5365

為什麼要使用聯合索引

減少開銷。建乙個聯合索引(col1,col2,col3),實際相當於建了(col1),(col1,col2),(col1,col2,col3)三個索引。每多乙個索引,都會增加寫操作的開銷和磁碟空間的開銷。對於大量資料的表,使用聯合索引會大大的減少開銷!

覆蓋索引。對聯合索引(col1,col2,col3),如果有如下的sql: select col1,col2,col3 from test where col1=1 and col2=2。那麼mysql可以直接通過遍歷索引取得資料,而無需回表,這減少了很多的隨機io操作。減少io操作,特別的隨機io其實是dba主要的優化策略。所以,在真正的實際應用中,覆蓋索引是主要的提公升效能的優化手段之一。

效率高。索引列越多,通過索引篩選出的資料越少。有1000w條資料的表,有如下sql:select from table where col1=1 and col2=2 and col3=3,假設假設每個條件可以篩選出10%的資料,如果只有單值索引,那麼通過該索引能篩選出1000w10%=100w條資料,然後再回表從100w條資料中找到符合col2=2 and col3= 3的資料,然後再排序,再分頁;如果是聯合索引,通過索引篩選出1000w10% 10% *10%=1w,效率提公升可想而知!

索引的作用和為什麼要建立索引

為什麼要建立索引呢?這是因為,建立索引可以大大提高系統的效能。第一,通過建立唯一性索引,可以保證資料庫表中每一行資料的唯一性。第二,可以大大加快 資料的檢索速度,這也是建立索引的最主要的原因。第三,可以加速表和表之間的連線,特別是在實現資料的參考完整性方面特別有意義。第四,在使用分組和排序 子句進行...

索引的作用和為什麼要建立索引

為什麼要建立索引呢?這是因為,建立索引可以大大提高系統的效能。第一,通過建立唯一性索引,可以保證資料庫表中每一行資料的唯一性。第二,可以大大加快 資料的檢索速度,這也是建立索引的最主要的原因。第三,可以加速表和表之間的連線,特別是在實現資料的參考完整性方面特別有意義。第四,在使用分組和排序 子句進行...

為什麼狀態少的字段不能建索引

此處以sqlserver為示例做演示。大多教科書和前輩們都說狀態少的字段不要建索引,由此帶來的開銷還不如不建索引,但是這句話有多少人真的知道,或者說有多少人真的對此有比較深刻的理解,而不是聽別人道聽途說。這樣記得快,忘記的也不慢。這篇我來分析一下這句話到底有幾個意思。一 現象 首先我們還是用測試資料...