MySQL如何使用索引

2021-10-05 02:25:22 字數 884 閱讀 9646

概念

索引用於快速查詢具有特定列值的行。沒有索引,mysql必須從第一行開始,然後通讀整個表以找到相關的行。表越大,耗費時間越多。如果表中有相關列的索引,mysql可以快速確定要在資料檔案中間查詢的位置,而不必檢視所有資料。這比順序讀取每一行要快得多。

大多數mysql索引(primary keyuniqueindexfulltext)儲存在 b樹。例外:空間資料型別的索引使用r樹;memory 表還支援雜湊索引 ; innodb對fulltext索引使用倒排列表。

mysql使用索引進行以下操作:

為了在非二進位制字串列之間進行比較,兩個列應使用相同的字符集。例如,將一utf8列與一 latin1列進行比較會排除使用索引。

如果不能不通過轉換直接比較值,則比較不同的列(例如,將字串列與時間或數字列進行比較)可能會阻止使用索引。對於給定的值,如1 在數值列,它可能比較等於在字串列,例如任何數量的值 『1』,』 1』, 『00001』,或』01.e1』。這排除了對字串列使用任何索引的可能性。

select

min(key_part2)

,max

(key_part2)

from tbl_name

where key_part1=

10;

select key_part3 

from tbl_name

where key_part1=

1

對於報表查詢處理大多數或所有行的小型表或大型表,索引的重要性不那麼重要。當查詢需要訪問大多數行時,順序讀取要比處理索引快。順序讀取可以最大程度地減少磁碟查詢,即使查詢不需要所有行。

MySql如何使用索引 一

我們都知道在 mysql 中使用索引可以提高查詢效率,但有時候真正執行sql查詢的時候卻沒有按照我們的預想使用索引,而是全表掃瞄,導致有慢sql影響了整個 的效率,甚至導致 崩潰,所以我們需要了解mysql是如何選擇使用索引的,以便建立合適的索引 本文基於mysql5.7,innodb引擎 假設有一...

MySql如何使用索引(二)

上篇介紹了mysql什麼時候會嘗試使用索引,本文介紹一下我了解的不會使用索引的情況,仍然使用上次建立好的表 不會使用索引 會使用索引 例如 name欄位為varchar型別的 select from test user where name 1將不能使用索引,而 select from test u...

mysql如何使用索引 MySQL是如何使用索引的

閒扯 很多時候我們面對很慢的查詢的時候會一籌莫展,這個時候大部分人都會很自然的想到建索引這條路。事實上索引確實是個很好的優化方式,乙個良好的索引能夠提公升不止一倍的效率,還能帶來併發能力的提公升。但是索引也不是萬能的,不然的話我大可以給一張表的所有列上都加上索引,但是基本上所有的dba都會有一條認知...