mysql的索引專題

什麼是索引?

假如你有一個表,
SQL> CREATE TABLE test_tab (2 id INT,
3 name VARCHAR(10),
4 age INT,
5 val VARCHAR(10)6 );你的業務,有一個查詢,是
SELECT * FROM test_tab WHERE name = 一個外部輸入的數據
剛開始,數據不多的時候,執行效果還不錯。
隨着數據量的增加,這個查詢,執行起來,越來越慢了。
然後在 name 上面 建立了索引
CREATE INDEX idx_test4_name ON test_tab (name );
這樣, 可以加快前面那個查詢的速度。
但是,某天,你執行了下面這個SQL, 發現速度又慢了
SELECT * FROM test_tab WHERE age = 25
爲啥呢? 因爲 age 字段上面,沒有索引
索引只在 name 上面有
換句話說, 也就是 WHERE 裏面的條件, 會自動判斷,有沒有 可用的索引,如果有, 該不該用。
多列索引,就是一個索引,包含了2個字段。
例如:CREATE INDEX idx_test_name_age ON test_tab (name, age);那麼SELECT * FROM test_tabWHEREname LIKE '張%'
AND age = 25
這樣的查詢,將能夠使用上面的索引。
多列索引,還有一個可用的情況就是, 某些情況下,可能查詢,只訪問索引就足夠了, 不需要再訪問表了。例如:SELECTAVG( avg ) AS 平均年齡FROMtest_tabWHEREname LIKE '張%'
這個時候, name 與 age 都包含在索引裏面。 查詢不需要去檢索表中的數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章