婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識(shí)庫 > 你的like語句為什么沒索引詳解

你的like語句為什么沒索引詳解

熱門標(biāo)簽:寶應(yīng)電信400電話辦理費(fèi)用 電銷機(jī)器人針對(duì)的 湘潭電銷機(jī)器人咨詢電話 外呼系統(tǒng)服務(wù) 外呼系統(tǒng)防封號(hào)違法嗎 高德地圖標(biāo)注中心個(gè)人注冊(cè) 400電話辦理都選易號(hào)網(wǎng) 高德地圖標(biāo)注模式 如何在高德地圖標(biāo)注新地址

前言

本文旨在用最通俗的語言講述最枯燥的基本知識(shí)

這個(gè)話題比較有意思。昨天中午吃完飯間突然有個(gè)同事蹦出了一句:“l(fā)ike有索引嗎?”,我順口就說沒有,另一個(gè)同事反駁說有啊,還有些同事說看情況的有,這下有點(diǎn)懵逼了,都不知道那種說法是正確的,于是決定花了個(gè)半小時(shí)來研究驗(yàn)證這個(gè)問題,終于得到答案。

怎么驗(yàn)證的呢?

坊間有傳言:MySQL性能優(yōu)化有個(gè)神器,叫做explain,它可以對(duì)select語句進(jìn)行分析并且輸出詳細(xì)的select執(zhí)行過程的詳細(xì)信息,讓開發(fā)者從這些信息中獲得優(yōu)化的思路。

下面來講講這個(gè)MySQL提供的explain命令:

語法:explain SQL語句例如:

1explain select * from user where id=1

執(zhí)行完畢之后,它的輸出有以下字段:

  id
  select_type
  table
  partitions
  type
  possible_keys
  key
  key_len
  ref
  rows
  Extra

要想知道explain命名怎么使用,就必須把這些字段搞清楚

1. id

SELECT查詢的標(biāo)識(shí)符, 每個(gè)SELECT語句都會(huì)自動(dòng)分配一個(gè)唯一的標(biāo)識(shí)符

2. select_type

每個(gè)select查詢字句的類型,具體類型以及對(duì)應(yīng)作用如下表:

類型名 解釋
SIMPLE 簡單SELECT,不使用UNION或子查詢等
PRIMARY 查詢中若包含任何復(fù)雜的子部分,最外層的select被標(biāo)記為PRIMARY
UNION UNION中的第二個(gè)或后面的SELECT語句
DEPENDENT UNION UNION中的第二個(gè)或后面的SELECT語句,取決于外面的查詢
UNION RESULT UNION的結(jié)果
SUBQUERY 子查詢中的第一個(gè)SELECT
DEPENDENT SUBQUERY 子查詢中的第一個(gè)SELECT,取決于外面的查詢
DERIVED 派生表的SELECT, FROM子句的子查詢
UNCACHEABLE SUBQUERY 一個(gè)子查詢的結(jié)果不能被緩存,必須重新評(píng)估外鏈接的第一行

3. table

顯示這一行的數(shù)據(jù)是查哪張表的,不過有時(shí)短路顯示的不是真實(shí)的表名。

4. partitions

匹配的分區(qū)(這個(gè)目前用處不大)

5. type

訪問類型,表示MySQL在表中找到所需行的方式,對(duì)應(yīng)的值和解釋如下:

類型名 優(yōu)級(jí)別 解釋
system 1 表僅有一行
const 2 表最多有一個(gè)匹配行,在查詢開始時(shí)即被讀取
eq_ref 3 使用primary key或者unique key作為多表連接的條件,僅從該表中讀取一行
ref 4 作為查詢條件的索引在每個(gè)表匹配索引值的行從表中讀取出來
fulltext 5 全文索引檢索
ref_or_null 6 和ref一致,但增加了NULL值查詢支持
index_merge 7 表示使用了索引合并優(yōu)化方法
unique_subquery 8 使用了替換了in子查詢
index_subquery 9 使用了替換了in子查詢,但只適用于子查詢中的非唯一索引
range 10 只檢索給定范圍的行,使用一個(gè)索引來選擇行
index 11 全表掃描,但掃描表的方式是按索引的次序進(jìn)行
ALL 12 全表掃描的方式找到匹配的行

type作為訪問類型,其值代表著當(dāng)前查詢所用的類型,是體現(xiàn)性能的一個(gè)重要指標(biāo),從表中可以看到,從上到下,掃描表的方式越來越寬,性能也就越來越差,因此,對(duì)于一個(gè)查詢,最好能保持在range級(jí)別以上。

6. possible_keys

主動(dòng)指出查詢能用哪個(gè)索引在表中找到記錄也就是會(huì)列出在查詢中的字段中有索引的字段,但不一定被查詢所用。

7. key

顯示再查詢中實(shí)際使用的索引/鍵,如果沒有索引,則顯示NULL。但如果想強(qiáng)制查詢中使用或忽視possible_keys列中的索引,則可以在查詢中使用FORCE INDEX、USE INDEX或者IGNORE INDEX。

8. key_len

表示索引中使用的字節(jié)數(shù)。

9. ref

表示哪些列或常量被用于查找索引列上的值。

10. rows

顯示當(dāng)前查詢估算到的查找到匹配記錄所需的記錄行數(shù)。

11. Extra

顯示當(dāng)前查詢所用的解決方式,它有以下幾種情況:

類型名 解釋
Using where 列數(shù)據(jù)是從僅僅使用了索引中的信息而沒有讀取實(shí)際的行動(dòng)的表返回的,
Using temporary 表示MySQL需要使用臨時(shí)表來存儲(chǔ)結(jié)果集,常見于排序和分組查詢
Using filesort MySQL中無法利用索引完成的排序操作稱為“文件排序”
Using join buffer 改值強(qiáng)調(diào)了在獲取連接條件時(shí)沒有使用索引,并且需要連接緩沖區(qū)來存儲(chǔ)中間結(jié)果。如果出現(xiàn)了這個(gè)值,那應(yīng)該注意,根據(jù)查詢的具體情況可能需要添加索引來改進(jìn)能。
Impossible where 這個(gè)值強(qiáng)調(diào)了where語句會(huì)導(dǎo)致沒有符合條件的行。
Select tables optimized away 這個(gè)值意味著僅通過使用索引,優(yōu)化器可能僅從聚合函數(shù)結(jié)果中返回一行

講完了語法,我們來實(shí)際操作一波,首先創(chuàng)建個(gè)表:

-- 創(chuàng)建表
CREATE TABLE test(
id INT(11) NOT NULL AUTO_INCREMENT,
uname VARCHAR(255),
PRIMARY KEY(id) 
);

然后給uname字段加上索引:

-- 添加索引
ALTER TABLE test ADD INDEX uname_index (uname);

查看一下索引是否添加成功:

-- 查看是否有索引
SHOW INDEX FROM test;

輸出結(jié)果為:

可以看出索引已經(jīng)創(chuàng)建成功,接下來添加一些數(shù)據(jù):

-- 添加一些數(shù)據(jù)
INSERT INTO test VALUES(1,'jay');
INSERT INTO test VALUES(2,'ja');
INSERT INTO test VALUES(3,'bril');
INSERT INTO test VALUES(4,'aybar');

一切準(zhǔn)備就緒,下面用explain這個(gè)命令來探究一些like語句是否有索引,like有四種情況,分別為沒有%、 %% 、左%、右%、

1. like 字段名

EXPLAIN SELECT * FROM test WHERE uname LIKE 'j'; 

輸出為:

可以看出:type的值為:range,key的值為uname_index,也就是說這種情況下,使用了索引。

2. like %字段名%

EXPLAIN SELECT * FROM test WHERE uname LIKE '%j%'; 

輸出為:

可以看出:type的值為ALL也就是全表掃描,而且key的值為NULL,也就是說沒用到任何索引。

3. like %字段名

EXPLAIN SELECT * FROM test WHERE uname LIKE '%j'; 

輸出為:

可以看出:type的值為ALL,key的值為NULL,同樣沒用到索引。

4. like 字段名%

EXPLAIN SELECT * FROM test WHERE uname LIKE 'j%'; 

輸出為:

可以看出:type的值為:range,key的值為uname_index,也就是說這種情況下,使用了索引。

總結(jié)

由上面的試驗(yàn)可以總結(jié)出like是否使用索引的規(guī)律:like語句要使索引生效,like后不能以%開始,也就是說 (like %字段名%)  、(like %字段名)這類語句會(huì)使索引失效,而(like 字段名)、(like 字段名%)這類語句索引是可以正常使用。

其它

為了查證like索引的問題,研究了MySQL神奇explain,但explain不僅僅只能檢查索引使用情況,還可以提供很多其它的性能優(yōu)化方面的幫助,至于具體的使用,其實(shí)跟上面講的一樣,把explain結(jié)果列出來,然后順藤摸瓜查閱相關(guān)的字段就可以得到相應(yīng)的內(nèi)容。

好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

您可能感興趣的文章:
  • 利用reverse索引優(yōu)化like語句的方法詳解

標(biāo)簽:南充 蘭州 佛山 黔南 宿遷 黃山 馬鞍山 賀州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《你的like語句為什么沒索引詳解》,本文關(guān)鍵詞  你的,like,語句,為什么,沒,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《你的like語句為什么沒索引詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于你的like語句為什么沒索引詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    久久99热这里只有精品| 欧美一卡二卡在线观看| 欧美精品丝袜久久久中文字幕| 精品福利二区三区| 麻豆成人在线观看| 制服丝袜在线91| 亚洲伦理在线精品| 色综合天天性综合| 一区二区三区在线不卡| 在线免费不卡视频| 一区二区三区日韩| 91精品在线麻豆| 亚洲精品欧美专区| 欧美日韩国产中文| 午夜精品久久久| 精品国产乱码久久久久久图片 | 国产精品99久久不卡二区| 日韩一二三区不卡| 91视频www| 美日韩一级片在线观看| 国产精品久久久久aaaa| 7777精品伊人久久久大香线蕉经典版下载 | 懂色av噜噜一区二区三区av| 亚洲精品国久久99热| 日韩欧美一区中文| 91麻豆国产精品久久| 久久99久久99精品免视看婷婷| 国产精品第五页| 26uuu亚洲| 欧美日韩国产区一| 91九色最新地址| 成人性生交大片免费看中文 | 国产婷婷精品av在线| 在线视频中文字幕一区二区| 国产精品影视在线观看| 免费在线观看成人| 亚洲www啪成人一区二区麻豆 | 久久久另类综合| 欧美色欧美亚洲另类二区| 久久精品久久精品| 亚洲欧美偷拍卡通变态| 欧美大胆一级视频| 欧美日韩一区二区三区四区| 国产成人自拍网| 国产一区二区在线影院| 麻豆精品一区二区综合av| 亚洲va天堂va国产va久| 一区免费观看视频| 久久亚洲综合色一区二区三区 | 国产一区二区三区黄视频 | 九色porny丨国产精品| 国产在线视视频有精品| 久久草av在线| 国产成人精品免费| 国产成人av网站| av中文一区二区三区| 99精品欧美一区| 91国产免费观看| 欧美一区二区大片| 亚洲精品一区二区三区蜜桃下载| 久久精品亚洲国产奇米99| 中文字幕亚洲成人| 亚洲mv在线观看| 久久精品国产亚洲a| 一区二区三区高清在线| 亚洲图片有声小说| 日韩一级片网站| 久久久久久久精| 一区二区免费看| 国产精品亚洲成人| 欧美日本乱大交xxxxx| 国产欧美精品国产国产专区| 日韩黄色小视频| 免费成人结看片| 色偷偷88欧美精品久久久| 日韩欧美一区在线观看| 综合亚洲深深色噜噜狠狠网站| 日韩二区三区四区| 成人高清视频在线观看| 久久蜜桃av一区精品变态类天堂| 香蕉久久一区二区不卡无毒影院| 91精品婷婷国产综合久久| 欧美福利电影网| 在线观看日韩电影| 国产大片一区二区| 成人午夜精品在线| 国产大片一区二区| 久久草av在线| 亚洲国产毛片aaaaa无费看| 亚洲一区二区视频| 99精品热视频| 成人激情黄色小说| 久久国产精品区| 九色porny丨国产精品| 亚洲人精品午夜| 亚洲精品免费视频| 日韩精品一区二区三区在线观看| 日日欢夜夜爽一区| 日韩av中文字幕一区二区| 成人网男人的天堂| 欧美日韩一级视频| 91精品国产91综合久久蜜臀| 一级做a爱片久久| 国产精品一区二区你懂的| 久久女同互慰一区二区三区| 蜜桃视频一区二区三区在线观看 | 欧美中文一区二区三区| 欧美一区二区三区四区高清| 亚洲精品视频免费看| 国产福利一区在线观看| 国产女人水真多18毛片18精品视频 | 久久久亚洲精品一区二区三区| 亚洲国产色一区| 欧美美女一区二区| 日韩国产欧美三级| 日韩欧美国产一二三区| 国产成人在线视频网站| 亚洲国产精品99久久久久久久久| 三级影片在线观看欧美日韩一区二区 | 日韩av二区在线播放| 久久青草欧美一区二区三区| 91色在线porny| 日韩精品一二三| 精品欧美久久久| www.日本不卡| 免费一区二区视频| 久久久精品2019中文字幕之3| 欧美视频完全免费看| 婷婷开心激情综合| 777久久久精品| 国产.精品.日韩.另类.中文.在线.播放| 国产人伦精品一区二区| 色婷婷精品大在线视频| 久久精品男人天堂av| 国产精品电影院| xfplay精品久久| 5月丁香婷婷综合| 在线日韩av片| 2023国产精品视频| 91麻豆视频网站| 国产ts人妖一区二区| 国产成都精品91一区二区三| 麻豆精品一区二区av白丝在线| 亚洲黄色录像片| 国产精品伦理在线| 亚洲国产岛国毛片在线| 精品奇米国产一区二区三区| 精品伦理精品一区| 久久久影视传媒| 一区二区三区在线观看动漫| 一区二区三区在线免费播放| 亚洲三级在线看| 麻豆国产精品视频| 99免费精品视频| 欧美在线看片a免费观看| 91在线视频播放地址| av成人动漫在线观看| 91精品国产综合久久久久久久久久| 777午夜精品免费视频| 欧美一区二区三区免费视频| 精品成a人在线观看| 一区二区免费视频| 久久国产剧场电影| 国产成人一级电影| 91香蕉国产在线观看软件| 99久久99久久综合| 精品欧美乱码久久久久久1区2区| 日本一区二区三区免费乱视频| 中文字幕日韩一区| 日韩二区三区在线观看| 成人av资源网站| 久久久午夜电影| 日韩不卡免费视频| 成人国产视频在线观看| 欧美日韩中文字幕一区| 国产精品你懂的在线欣赏| 九九**精品视频免费播放| 91精品麻豆日日躁夜夜躁| 亚洲国产精品成人综合 | 亚洲伊人伊色伊影伊综合网| 狠狠色伊人亚洲综合成人| 在线亚洲高清视频| 亚洲大片免费看| 成人一区二区三区中文字幕| 久久九九影视网| 成人性生交大片免费看中文| 中文字幕乱码一区二区免费| 日韩综合小视频| 成人avav影音| 久久99这里只有精品| 国产日产亚洲精品系列| 成人黄色av电影| www一区二区| 国产成人在线观看| 中文字幕日韩一区| 一本大道av一区二区在线播放| 日本一区二区三区dvd视频在线| 国产.欧美.日韩| 亚洲成人一区在线| 精品久久久久99|