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

MySQL 索引的一些細(xì)節(jié)分享

 更新時(shí)間:2020年12月28日 09:32:29   作者:Nicksxs  
這篇文章主要介紹了MySQL 索引的一些細(xì)節(jié)分享,幫助大家更好的理解和使用MySQL中的索引,感興趣的朋友可以了解下

前幾天同事問(wèn)了我個(gè) mysql 索引的問(wèn)題,雖然大概知道,但是還是想來(lái)實(shí)踐下,就是 is null,is not null 這類(lèi)查詢(xún)是否能用索引,可能之前有些網(wǎng)上的文章說(shuō)都是不能用索引,但是其實(shí)不是,我們來(lái)看個(gè)小試驗(yàn)

CREATE TABLE `null_index_t` (
 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
 `null_key` varchar(255) DEFAULT NULL,
 `null_key1` varchar(255) DEFAULT NULL,
 `null_key2` varchar(255) DEFAULT NULL,
 PRIMARY KEY (`id`),
 KEY `idx_1` (`null_key`) USING BTREE,
 KEY `idx_2` (`null_key1`) USING BTREE,
 KEY `idx_3` (`null_key2`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

用個(gè)存儲(chǔ)過(guò)程來(lái)插入數(shù)據(jù)

delimiter $	#以delimiter來(lái)標(biāo)記用$表示存儲(chǔ)過(guò)程結(jié)束
create procedure nullIndex1()
begin
declare i int;	
declare j int;	
set i=1;
set j=1;
while(i<=100) do	
	while(j<=100) do	
		IF (i % 3 = 0) THEN
	   INSERT INTO null_index_t ( `null_key`, `null_key1`, `null_key2` ) VALUES (null , LEFT(MD5(RAND()), 8), LEFT(MD5(RAND()), 8));
  ELSEIF (i % 3 = 1) THEN
			 INSERT INTO null_index_t ( `null_key`, `null_key1`, `null_key2` ) VALUES (LEFT(MD5(RAND()), 8), NULL, LEFT(MD5(RAND()), 8));
	 ELSE
			 INSERT INTO null_index_t ( `null_key`, `null_key1`, `null_key2` ) VALUES (LEFT(MD5(RAND()), 8), LEFT(MD5(RAND()), 8), NULL);
  END IF;
		set j=j+1;
	end while;
	set i=i+1;
	set j=1;	
end while;
end 
$
call nullIndex1();

然后看下我們的 is null 查詢(xún)

EXPLAIN select * from null_index_t WHERE null_key is null;

再來(lái)看看另一個(gè)

EXPLAIN select * from null_index_t WHERE null_key is not null;

從這里能看出來(lái)啥呢,可以思考下

從上面可以發(fā)現(xiàn),is null應(yīng)該是用上了索引了,所以至少不是一刀切不能用,但是看著is not null好像不太行額
我們?cè)谧鲆稽c(diǎn)小改動(dòng),把這個(gè)表里的數(shù)據(jù)改成 9100 條是 null,剩下 900 條是有值的,然后再執(zhí)行下

然后再來(lái)看看執(zhí)行結(jié)果

EXPLAIN select * from null_index_t WHERE null_key is null;

EXPLAIN select * from null_index_t WHERE null_key is not null;

是不是不一樣了,這里再補(bǔ)充下我試驗(yàn)使用的 mysql 是 5.7 的,不保證在其他版本的一致性,
其實(shí)可以看出隨著數(shù)據(jù)量的變化,mysql 會(huì)不會(huì)使用索引是會(huì)變化的,不是說(shuō) is not null 一定會(huì)使用,也不是一定不會(huì)使用,而是優(yōu)化器會(huì)根據(jù)查詢(xún)成本做個(gè)預(yù)判,這個(gè)預(yù)判盡可能會(huì)減小查詢(xún)成本,主要包括回表啥的,但是也不一定完全準(zhǔn)確。

以上就是MySQL 索引的一些細(xì)節(jié)分享的詳細(xì)內(nèi)容,更多關(guān)于MySQL 索引的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 如何安全地關(guān)閉MySQL

    如何安全地關(guān)閉MySQL

    這篇文章主要介紹了如何安全地關(guān)閉MySQL,幫助大家更好的理解和使用MySQL,感興趣的朋友可以了解下
    2020-12-12
  • 解決ERROR?2003?(HY000):?Can‘t?connect?to?MySQL?server?on?‘localhost‘?(111)的問(wèn)題

    解決ERROR?2003?(HY000):?Can‘t?connect?to?MySQL?server?

    在Windows系統(tǒng)上使用Django連接Ubuntu虛擬機(jī)中的MySQL數(shù)據(jù)庫(kù)時(shí),遇到無(wú)法連接的問(wèn)題,排查后發(fā)現(xiàn)是由于MySQL綁定的IP地址改變導(dǎo)致的,下面就來(lái)介紹一下問(wèn)題解決,感興趣的可以了解一下
    2024-09-09
  • CentOs7 64位 mysql 5.6.40源碼安裝過(guò)程

    CentOs7 64位 mysql 5.6.40源碼安裝過(guò)程

    這篇文章主要介紹了CentOs7 64位 mysql-5.6.40源碼安裝過(guò)程,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01
  • MySQL中查詢(xún)?nèi)罩九c慢查詢(xún)?nèi)罩镜幕緦W(xué)習(xí)教程

    MySQL中查詢(xún)?nèi)罩九c慢查詢(xún)?nèi)罩镜幕緦W(xué)習(xí)教程

    這篇文章主要介紹了MySQL中查詢(xún)?nèi)罩九c慢查詢(xún)?nèi)罩镜幕緦W(xué)習(xí)教程,文中還提到了MySQL自帶的Mysqldumpslow日志分析工具的使用,需要的朋友可以參考下
    2015-12-12
  • 使用mysqldump導(dǎo)入數(shù)據(jù)和mysqldump增量備份(mysqldump使用方法)

    使用mysqldump導(dǎo)入數(shù)據(jù)和mysqldump增量備份(mysqldump使用方法)

    mysqldump常用于MySQL數(shù)據(jù)庫(kù)邏輯備份,下面看實(shí)例吧
    2013-12-12
  • mysql?8.0.27?安裝配置方法圖文教程(Windows64位)

    mysql?8.0.27?安裝配置方法圖文教程(Windows64位)

    這篇文章主要為大家詳細(xì)介紹了mysql?8.0.27?下載、安裝與配置圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 完美解決mysql客戶(hù)端授權(quán)后連接失敗的問(wèn)題

    完美解決mysql客戶(hù)端授權(quán)后連接失敗的問(wèn)題

    下面小編就為大家?guī)?lái)一篇完美解決mysql客戶(hù)端授權(quán)后連接失敗的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • 分享MySQL常用?內(nèi)核?Debug?幾種常見(jiàn)方法

    分享MySQL常用?內(nèi)核?Debug?幾種常見(jiàn)方法

    這篇文章主要給大家分享的是MySQL常用的內(nèi)核Debug技巧,掌握?MySQL?內(nèi)核源碼的閱讀和調(diào)試能力,不僅是數(shù)據(jù)庫(kù)研發(fā)人員的日常,也是?DBA?進(jìn)階的必經(jīng)之路,下面一起進(jìn)入文章了解更多相關(guān)內(nèi)容吧
    2022-03-03
  • Mysql啟動(dòng)報(bào)ERROR:2002的分析與解決

    Mysql啟動(dòng)報(bào)ERROR:2002的分析與解決

    這篇文章主要給大家介紹了關(guān)于Mysql啟動(dòng)時(shí)報(bào)ERROR:2002問(wèn)題的分析與解決方法,文中通過(guò)示例代碼介紹將該問(wèn)題分析的非常詳細(xì),對(duì)同樣遇到這個(gè)問(wèn)題的朋友們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-08-08
  • MySQL5.7.33安裝過(guò)程圖文詳解

    MySQL5.7.33安裝過(guò)程圖文詳解

    這篇文章主要介紹了MySQL5.7.33安裝過(guò)程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03

最新評(píng)論