索引(index)是幫助mysql高效獲取資料的資料結構。所以說索引的本質是:資料結構。
簡單理解就是:排好序的快速查詢資料的資料結構。
一般來說,索引本身也很大,不可能全部儲存在記憶體中,所以通常以索引檔案的形式儲存在磁碟上。
高效的檢索資料
通過索引列隊資料排序
更新表(增、刪、改)的同時也需要更新索引,降低了更新表的速度。
由於索引通常儲存在磁碟上,所以占用了額外的空間。
主鍵自動建立唯一索引。
頻繁作為條件查詢的字段。
查詢中與其他表關聯的字段,比如外來鍵。
單鍵/組合索引對比,組合索引價效比更高。
查詢中需要排序的字段。
查詢中需要統計或分組的字段。
表記錄太少,比如只有幾行,幾百行記錄。
經常增、刪、改的表或字段。
where條件裡用不到的字段。
過濾性不好的字段。(過濾性不好表示不能唯一定位一條記錄或者每次定位記錄行數太多,比如性別。而身份證號過濾性就很好。)
究竟什麼時候該建立索引
索引用於快速找出在某個列中有一特定值的行。不使用索引,mysql必須從第1條記錄開始然後讀完整個表直到找出相關的行。表越大,花費的時間越多。如果表中查詢的列有乙個索引,mysql能快速到達乙個位置去搜尋到資料檔案的中間,沒有必要看所有資料。大多數mysql索引 primary key unique ...
MySQL索引 組合索引,什麼時候使用索引?
表abc,建立組合索引 a,b,c 語句 是否使用索引 使用情況 1where a 1 and b 2 and c 3 是a,b,c 2where a 1 and b 2 是a,b 3where a 1 是a 4where a 1 or b 2 是 當只有 a,b,c列時,一般實際中不會出現這樣的情...
MySQL索引在什麼時候失效
1.如果條件中有or,即使其中有條件帶索引也不會使用 這也是為什麼盡量少用or的原因 注意 要想使用or,又想讓索引生效,只能將or條件中的每個列都加上索引 2.對於多列索引,不是使用的第一部分,則不會使用索引 3.like查詢是以 開頭 4.如果列型別是字串,那一定要在條件中將資料使用引號引用起來...