欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mysql中SQL語(yǔ)句不使用索引的情況

 更新時(shí)間:2019年03月20日 11:35:14   作者:CODETC  
今天小編就為大家分享一篇關(guān)于Mysql中SQL語(yǔ)句不使用索引的情況,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧

MySQL查詢不使用索引匯總

眾所周知,增加索引是提高查詢速度的有效途徑,但是很多時(shí)候,即使增加了索引,查詢?nèi)匀徊皇褂盟饕?,這種情況嚴(yán)重影響性能,這里就簡(jiǎn)單總結(jié)幾條MySQL不使用索引的情況

如果MySQL估計(jì)使用索引比全表掃描更慢,則不使用索引。例如,如果列key均勻分布在1和100之間,下面的查詢使用索引就不是很好:select * from table_name where key>1 and key<90;

如果使用MEMORY/HEAP表,并且where條件中不使用“=”進(jìn)行索引列,那么不會(huì)用到索引,head表只有在“=”的條件下才會(huì)使用索引

用or分隔開(kāi)的條件,如果or前的條件中的列有索引,而后面的列沒(méi)有索引,那么涉及到的索引都不會(huì)被用到,例如:select * from table_name where key1='a' or key2='b';如果在key1上有索引而在key2上沒(méi)有索引,則該查詢也不會(huì)走索引

復(fù)合索引,如果索引列不是復(fù)合索引的第一部分,則不使用索引(即不符合最左前綴),例如,復(fù)合索引為(key1,key2),則查詢select * from table_name where key2='b';將不會(huì)使用索引

如果like是以‘%'開(kāi)始的,則該列上的索引不會(huì)被使用。例如select * from table_name where key1 like '%a';該查詢即使key1上存在索引,也不會(huì)被使用

如果列為字符串,則where條件中必須將字符常量值加引號(hào),否則即使該列上存在索引,也不會(huì)被使用。例如,select * from table_name where key1=1;如果key1列保存的是字符串,即使key1上有索引,也不會(huì)被使用。

從上面可以看出,即使我們建立了索引,也不一定會(huì)被使用,那么我們?nèi)绾沃牢覀兯饕氖褂们闆r呢??在MySQL中,有Handler_read_keyHandler_read_rnd_key兩個(gè)變量,如果Handler_read_key值很高而Handler_read_rnd_key的值很低,則表明索引經(jīng)常不被使用,應(yīng)該重新考慮建立索引。可以通過(guò):show status like 'Handler_read%'來(lái)查看著連個(gè)參數(shù)的值。

關(guān)于如何正確創(chuàng)建Mysql的索引,請(qǐng)參考怎樣正確創(chuàng)建MySQL索引的方法詳解;眾所周知,數(shù)據(jù)表索引可以提高數(shù)據(jù)的檢索效率,也可以降低數(shù)據(jù)庫(kù)的IO成本,并且索引還可以降低數(shù)據(jù)庫(kù)的排序成本;但索引并不是時(shí)時(shí)都會(huì)生效的,比如以下幾種情況,將導(dǎo)致索引失效:

1.如果條件中有or,即使其中有條件帶索引也不會(huì)使用索引(這也是為什么SQL語(yǔ)句中盡量少用or的原因)

注意:要想使用or,又想讓索引生效,只能將or條件中的每個(gè)列都加上索引。

2.對(duì)于多列索引,不是使用的第一部分,則不會(huì)使用索引。

3.like查詢是以%開(kāi)頭時(shí)不會(huì)使用索引。

4.如果列類型是字符串,那一定要在條件中將數(shù)據(jù)使用引號(hào)引用起來(lái),否則不使用索引。

5.如果 mysql 估計(jì)使用全表掃描要比使用索引快,則不使用索引。

此外,查看索引的使用情況

show status like 'Handler_read%';

大家可以注意:

handler_read_key:這個(gè)值越高越好,越高表示使用索引查詢到的次數(shù)。

handler_read_rnd_next:這個(gè)值越高,說(shuō)明查詢?cè)降托А?/p>

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

相關(guān)文章

  • MySQL基于SSL協(xié)議進(jìn)行主從復(fù)制的詳細(xì)操作教程

    MySQL基于SSL協(xié)議進(jìn)行主從復(fù)制的詳細(xì)操作教程

    這篇文章主要介紹了MySQL基于SSL協(xié)議進(jìn)行主從復(fù)制的詳細(xì)操作教程,示例環(huán)境基于Linux系統(tǒng)以及OpenSSL客戶端,需要的朋友可以參考下
    2015-12-12
  • mysql的查詢否定語(yǔ)句有哪些

    mysql的查詢否定語(yǔ)句有哪些

    MySQL查詢否定語(yǔ)句是一個(gè)非常有用的工具,可以幫助我們輕松應(yīng)對(duì)復(fù)雜的查詢需求。在使用否定語(yǔ)句時(shí),需要注意語(yǔ)法和性能方面的問(wèn)題,以確保查詢結(jié)果的準(zhǔn)確性和效率。
    2023-10-10
  • mysql-connector-java.jar包的下載過(guò)程詳解

    mysql-connector-java.jar包的下載過(guò)程詳解

    這篇文章主要介紹了mysql-connector-java.jar包的下載過(guò)程詳解,mysql-connector-java.jar是java連接使用MySQL是必不可少的,感興趣的可以了解一下
    2020-07-07
  • 如何保護(hù)MySQL中重要數(shù)據(jù)的方法

    如何保護(hù)MySQL中重要數(shù)據(jù)的方法

    在日常的工作中,保護(hù)數(shù)據(jù)免受未授權(quán)用戶的侵犯是系統(tǒng)管理員特別關(guān)心的問(wèn)題。如果你目前用的是MySQL,就可以使用一些方便的功能來(lái)保護(hù)系統(tǒng),來(lái)大大減少機(jī)密數(shù)據(jù)被未授權(quán)用戶訪問(wèn)的風(fēng)險(xiǎn)
    2011-10-10
  • Mysql Online DDL的使用詳解

    Mysql Online DDL的使用詳解

    在日常DBA運(yùn)維過(guò)程中,對(duì)表結(jié)構(gòu)進(jìn)行變更算是個(gè)普遍的需求了。如果操作的對(duì)象是個(gè)熱表、大表,難免心里一怵,這些DDL操作是否可以直接執(zhí)行,哪些會(huì)影響線上讀寫,哪些會(huì)影響主從,甚至導(dǎo)致服務(wù)器壓力驟升,本文做了梳理,希望對(duì)大家有所幫助。
    2021-05-05
  • mysql8關(guān)閉binlog并清空Binlog的方法

    mysql8關(guān)閉binlog并清空Binlog的方法

    這篇文章主要介紹了mysql8關(guān)閉binlog并清空Binlog,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • percona 實(shí)用工具之pt-kill使用介紹

    percona 實(shí)用工具之pt-kill使用介紹

    一個(gè)優(yōu)秀的kill MySQL連接的一個(gè)工具,是percona toolkit的一部分,在因?yàn)榭臻e連接較多導(dǎo)致超過(guò)最大連接數(shù)、某個(gè)有問(wèn)題的sql導(dǎo)致mysql負(fù)載很高時(shí),都需要將一些連接kill掉,這個(gè)工具主要就是這個(gè)用途
    2016-04-04
  • 教你一招永久解決mysql插入中文失敗問(wèn)題

    教你一招永久解決mysql插入中文失敗問(wèn)題

    mysql經(jīng)常會(huì)遇到某些中文插入異常,最近有同學(xué)反饋了這樣一個(gè)問(wèn)題,所以下面這篇文章主要給大家介紹了關(guān)于如何永久解決mysql插入中文失敗問(wèn)題的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • MySQL中字段類型char、varchar和text的區(qū)別

    MySQL中字段類型char、varchar和text的區(qū)別

    今天小編就為大家分享一篇關(guān)于MySQL中字段類型char、varchar和text的區(qū)別,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • MySQL多個(gè)字段拼接去重的實(shí)現(xiàn)示例

    MySQL多個(gè)字段拼接去重的實(shí)現(xiàn)示例

    在MySQL中,我們經(jīng)常會(huì)遇到需要將多個(gè)字段進(jìn)行拼接并去重的情況,本文就來(lái)介紹一下MySQL多個(gè)字段拼接去重的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01

最新評(píng)論