国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MySQL索引失效的七大場(chǎng)景

這篇具有很好參考價(jià)值的文章主要介紹了MySQL索引失效的七大場(chǎng)景。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

口訣

模型數(shù)或運(yùn)算快

初始化數(shù)據(jù)庫(kù)

這里我們以MySQL自帶的world數(shù)據(jù)庫(kù)中的country表為例。

索引失效七大場(chǎng)景

模(模糊查詢)

向name列添加索引

create index index_name on country(name);

查看country表索引

show index from country;

MySQL索引失效的七大場(chǎng)景

  • 測(cè)試like完全匹配
explain select count(1) from country  where name like '%Aruba%'

MySQL索引失效的七大場(chǎng)景
可以看到type級(jí)別是index。索引失效。

在 MySQL 中,使用 EXPLAIN 語(yǔ)句可以查看查詢語(yǔ)句的執(zhí)行計(jì)劃,了解 MySQL 如何執(zhí)行查詢。其中,EXPLAIN
語(yǔ)句的結(jié)果集中的 type 字段用于表示 MySQL 在執(zhí)行查詢時(shí)所使用的訪問(wèn)類型。
type 字段可能的取值包括:
system:表示只有一行數(shù)據(jù)的表,通常是一些系統(tǒng)表; const:表示只有一行數(shù)據(jù)的表,通常是通過(guò)在查詢中指定主鍵或唯一索引來(lái)檢索數(shù)據(jù);
eq_ref:表示使用了連接索引,且索引的所有部分都被使用,一般出現(xiàn)在連接查詢中;
ref:表示使用了非唯一性索引,返回匹配某個(gè)單獨(dú)值的所有行;
fulltext:表示使用全文索引進(jìn)行搜索;
ref_or_null:表示使用非唯一性索引,但可能存在一個(gè)或多個(gè) NULL 值;
index_merge:表示使用了多個(gè)索引進(jìn)行查詢,并將結(jié)果進(jìn)行合并;
unique_subquery:表示使用了子查詢,并且該子查詢使用了唯一性索引;
index_subquery:表示使用了子查詢,并且該子查詢使用了非唯一性索引;
range:表示使用了索引進(jìn)行范圍查詢;
index:表示全表掃描,并且按索引順序掃描;
all:表示全表掃描。
需要注意的是,type字段的取值順序是從最好到最差的查詢類型順序。當(dāng) type 字段的取值是 system、const、eq_ref 時(shí),性能最好;當(dāng) type字段的取值是 all 時(shí),性能最差。
通過(guò)查看 type字段的取值,可以評(píng)估查詢的性能并優(yōu)化查詢。通常來(lái)說(shuō),使用索引查詢會(huì)比全表掃描查詢更快速、更高效。因此,盡可能地使用索引來(lái)優(yōu)化查詢是一個(gè)很好的選擇。

  • 測(cè)試like左匹配
explain select count(1) from country where Name like '%Aruba'

MySQL索引失效的七大場(chǎng)景
type級(jí)別為index,索引失效。

  • 測(cè)試like右匹配
explain select count(1) from country where Name like 'Aruba%';

MySQL索引失效的七大場(chǎng)景
type級(jí)別為range,索引命中!
所以注意模糊查詢右匹配可以命中?。。?/font>

型(數(shù)據(jù)類型)

如果數(shù)據(jù)類型不匹配那么索引就會(huì)失效。
如下面的sql

explain select count(1) from country where name=1

MySQL索引失效的七大場(chǎng)景

數(shù)(函數(shù))

對(duì)索引的字段使用內(nèi)部函數(shù),索引也會(huì)失效。
對(duì)population字段創(chuàng)建索引

create index index_population on country(population);

MySQL索引失效的七大場(chǎng)景
這里對(duì)population字段使用POW函數(shù)

explain select pow(Population,2) from country;

MySQL索引失效的七大場(chǎng)景
索引失效。

或(OR)

where語(yǔ)句中使用or來(lái)連接的字段,如果一個(gè)有索引一個(gè)沒(méi)索引,那么存儲(chǔ)引擎將放棄索引而全表掃描

explain select count(1) from country where name like 'Aruba%' or SurfaceArea=193;

MySQL索引失效的七大場(chǎng)景
級(jí)別為ALL,全表掃描,索引失效。

運(yùn)(運(yùn)算)

對(duì)索引的列進(jìn)行算術(shù)運(yùn)算將使索引失效。

explain select count(1) from country where Population+1>100000;

MySQL索引失效的七大場(chǎng)景

最(最左原則)

嘴和索引,查詢的條件列不是聯(lián)合索引的第一個(gè)列,索引失效。
給Continent,Region,IndepYear字段創(chuàng)建聯(lián)合索引

create index index_union on country(Continent,Region,IndepYear);

MySQL索引失效的七大場(chǎng)景

  • where條件中包含聯(lián)合索引最左字段
explain select count(1) from country where Region='Caribbean' and Continent='North America';

MySQL索引失效的七大場(chǎng)景
級(jí)別為ref,索引有效。

  • where條件中不包含聯(lián)合索引最左字段
explain select count(1) from country where IndepYear IS NULL and Continent='North America';

MySQL索引失效的七大場(chǎng)景
索引失效。

快(查詢數(shù)據(jù)量大)

當(dāng)查詢數(shù)量超過(guò)表的一部分,索引就會(huì)失效。

explain select count(1) from country where Population>=0;

MySQL索引失效的七大場(chǎng)景
Population>=0全部數(shù)據(jù)都會(huì)查出,type是index,索引失效。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-421163.html

到了這里,關(guān)于MySQL索引失效的七大場(chǎng)景的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • MySQL會(huì)導(dǎo)致索引失效的情況與解決索引失效的方法

    什么情況會(huì)導(dǎo)致索引失效 索引失效也是慢查詢的主要原因之一,常見(jiàn)的導(dǎo)致索引失效的情況有下面這些: 1.使用 SELECT * 進(jìn)行查詢; 2.創(chuàng)建了組合索引,但查詢條件未準(zhǔn)守最左匹配原則; 3.在索引列上進(jìn)行計(jì)算、函數(shù)、類型轉(zhuǎn)換等操作; 4.以 % 開(kāi)頭的 LIKE 查詢比如 like \\\'%abc\\\'; ; 5.查

    2023年04月08日
    瀏覽(29)
  • mysql 查詢優(yōu)化 、索引失效

    mysql 查詢優(yōu)化 、索引失效

    查詢優(yōu)化 物理查詢優(yōu)化 通過(guò)索引和表連接方式等技術(shù)來(lái)進(jìn)行優(yōu)化,這里重點(diǎn)需要掌握索引的使用 邏輯查詢優(yōu)化 通過(guò)SQL 等價(jià)變換 提升查詢效率,直白一點(diǎn)就是說(shuō),換一種查詢寫(xiě)法執(zhí)行效率可能更高 索引失效 計(jì)算、函數(shù)、類型轉(zhuǎn)換(自動(dòng)或手動(dòng))導(dǎo)致索引失效 select sql_no_c

    2024年02月10日
    瀏覽(19)
  • MySQL 索引失效詳解

    一、MySQL索引失效原因匯總 隱式的類型轉(zhuǎn)換,索引失效 查詢條件包含or,可能導(dǎo)致索引失效 like通配符可能導(dǎo)致索引失效 查詢條件不滿足聯(lián)合索引的最左匹配原則 在索引列上使用mysql的內(nèi)置函數(shù) 對(duì)索引進(jìn)行列運(yùn)算(如,+、-、*、/) 索引字段上使用 (! = 或者 ),索引可能失效 索

    2024年02月02日
    瀏覽(48)
  • Mysql中索引優(yōu)化和失效

    要了解索引優(yōu)化和索引失效的場(chǎng)景就要先了解什么是索引 索引是一種有序的存儲(chǔ)結(jié)構(gòu),按照單個(gè)或者多個(gè)列的值進(jìn)行排序,以提升搜索效率。 索引的類型 UNIQUE唯一索引 不可以出現(xiàn)相同的值,可以有NULL值。 INDEX普通索引 允許出現(xiàn)相同的索引內(nèi)容。 PRIMARY KEY主鍵索引 不允許出

    2024年02月20日
    瀏覽(31)
  • 第20章:MySQL索引失效案例

    第20章:MySQL索引失效案例

    1. 全值匹配我最愛(ài) 當(dāng)SQL查詢 創(chuàng)建3個(gè)索引 當(dāng)前優(yōu)化器會(huì)選擇跟where條件匹配最高的idx_age_classid_name索引,直接查詢出對(duì)應(yīng)的主鍵值然后回表查詢,此時(shí)的效率最高。所以部分索引失效,因?yàn)槭褂玫牟糠炙饕?,?huì)查詢多個(gè)主鍵值還需要回表繼續(xù)判斷,效率低。 2. 最佳左前綴規(guī)則

    2024年02月11日
    瀏覽(19)
  • 詳解MySQL索引失效的幾種情況

    詳解MySQL索引失效的幾種情況

    MySQL索引是提高查詢效率的重要手段。索引失效會(huì)導(dǎo)致查詢效率下降,甚至全表掃描,影響數(shù)據(jù)庫(kù)性能。以下是可能導(dǎo)致MySQL索引失效的情況: 當(dāng)where語(yǔ)句中使用 or 操作符并且 or 兩邊的條件涉及到至少兩個(gè)字段時(shí),MySQL無(wú)法使用索引,會(huì)轉(zhuǎn)向全表掃描。因此,應(yīng)盡量避免使用

    2024年02月01日
    瀏覽(21)
  • MySQL索引3——Explain關(guān)鍵字和索引優(yōu)化(SQL提示、索引失效、索引使用規(guī)則)

    MySQL索引3——Explain關(guān)鍵字和索引優(yōu)化(SQL提示、索引失效、索引使用規(guī)則)

    目錄 Explain 索引性能分析 Id ——select的查詢序列號(hào) Select_type——select查詢的類型 Table——表名稱 Type——select的連接類型 Possible_key ——顯示可能應(yīng)用在這張表的索引 Key——實(shí)際用到的索引 Key_len——實(shí)際索引使用到的字節(jié)數(shù) Ref??? ——索引命中的列或常量 Rows——預(yù)

    2024年02月14日
    瀏覽(47)
  • 面試官:講講MySql索引失效的幾種情況

    拓展:Alibaba《Java開(kāi)發(fā)手冊(cè)》 【強(qiáng)制】頁(yè)面搜索嚴(yán)禁左模糊或者全模糊,如果需要請(qǐng)走搜索引擎來(lái)解決。 注意: 當(dāng)數(shù)據(jù)庫(kù)中的數(shù)據(jù)的索引列的 NULL值達(dá)到比較高的比例的時(shí)候 ,即使在IS NOT NULL 的情況下 MySQL的查詢優(yōu)化器會(huì)選擇使用索引, 此時(shí)type的值是range(范圍查詢) 測(cè)試

    2024年02月11日
    瀏覽(26)
  • mysql : name like “%name“; 索引一定失效嗎?

    mysql : name like “%name“; 索引一定失效嗎?

    場(chǎng)景如下: MySQL版本如下: 表結(jié)構(gòu)如下: 索引結(jié)構(gòu)如下: 查詢語(yǔ)句以及執(zhí)行計(jì)劃如下: 第一條查詢語(yǔ)句: select name from em where name like ‘%b’; 可以發(fā)現(xiàn)使用了name 字段創(chuàng)建的索引 第二條查詢語(yǔ)句: select id from em where name like ‘%b’; 第三條查詢語(yǔ)句: select * from em where name l

    2024年02月03日
    瀏覽(22)
  • MySQL索引3——Explain關(guān)鍵字和索引使用規(guī)則(SQL提示、索引失效、最左前綴法則)

    MySQL索引3——Explain關(guān)鍵字和索引使用規(guī)則(SQL提示、索引失效、最左前綴法則)

    目錄 Explain 索引性能分析 Id ——select的查詢序列號(hào) Select_type——select查詢的類型 Table——表名稱 Type——select的連接類型 Possible_key ——顯示可能應(yīng)用在這張表的索引 Key——實(shí)際用到的索引 Key_len——實(shí)際索引使用到的字節(jié)數(shù) Ref??? ——索引命中的列或常量 Rows——預(yù)

    2024年02月14日
    瀏覽(18)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包