MYSQL索引問(wèn)題:索引在查詢(xún)中如何使用?看了很多資料都只說(shuō)索引的建立。是否建立了就不用再理會(huì )?

3年前 (2021-06-12)閱讀689回復0
你給我過(guò)來(lái)
你給我過(guò)來(lái)
  • 管理員
  • 發(fā)消息
  • 注冊排名592
  • 經(jīng)驗值110
  • 級別管理員
  • 主題22
  • 回復0
樓主

這里有篇博客《使用例子來(lái)介紹 MySQL索引的簡(jiǎn)單用法》

021yin.com /article/use-examples-to-introduce-simple-usage-of-mysql-index.html

??假如你有一個(gè)表,

SQL> CREATE TABLE test_tab (

2 id INT,

3 name VARCHAR(10),

4 age INT,

5 val VARCHAR(10)

6 );

你的業(yè)務(wù),有一個(gè)查詢(xún),是

SELECT * FROM test_tab WHERE name = 一個(gè)外部輸入的數據

剛開(kāi)始,數據不多的時(shí)候,執行效果還不錯。

隨著(zhù)數據量的增加,這個(gè)查詢(xún),執行起來(lái),越來(lái)越慢了。

然后在 name 上面 建立了索引

CREATE INDEX idx_test4_name ON test_tab (name );

這樣, 可以加快前面那個(gè)查詢(xún)的速度。

但是,某天,你執行了下面這個(gè)SQL, 發(fā)現速度又慢了

SELECT * FROM test_tab WHERE age = 25

為啥呢? 因為 age 字段上面,沒(méi)有索引

索引只在 name 上面有

換句話(huà)說(shuō), 也就是 WHERE 里面的條件, 會(huì )自動(dòng)判斷,有沒(méi)有 可用的索引,如果有, 該不該用。

多列索引,就是一個(gè)索引,包含了2個(gè)字段。

例如:

CREATE INDEX idx_test_name_age ON test_tab (name, age);

那么

SELECT * FROM test_tab

WHERE

name LIKE '張%'

AND age = 25

這樣的查詢(xún),將能夠使用上面的索引。

多列索引,還有一個(gè)可用的情況就是, 某些情況下,可能查詢(xún),只訪(fǎng)問(wèn)索引就足夠了, 不需要再訪(fǎng)問(wèn)表了。例如:

SELECT

AVG( avg ) AS 平均年齡

FROM

test_tab

WHERE

name LIKE '張%'

這個(gè)時(shí)候, name 與 age 都包含在索引里面。

?? 查詢(xún)不需要去檢索表中的數據。

0
0
收藏0
回帖

MYSQL索引問(wèn)題:索引在查詢(xún)中如何使用?看了很多資料都只說(shuō)索引的建立。是否建立了就不用再理會(huì )? 期待您的回復!

取消
載入表情清單……
載入顏色清單……
插入網(wǎng)絡(luò )圖片

取消確定

圖片上傳中
編輯器信息
提示信息