日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

where显示null行_Python 之 MySql“未解之谜”14-- 都是 NULL 惹的祸(下)

發布時間:2023/12/19 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 where显示null行_Python 之 MySql“未解之谜”14-- 都是 NULL 惹的祸(下) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在網上看到 MySql

關于 NULL 的文章

有幾個值得爭議的觀點,我們一起看看

● 準備工作

MySql 版本 5.7,InnoDB 存儲引擎,

表 test 數據量 10 w,

其中 a ,b,c 都是單列索引,都可以為 NULL,

a 列中 99 % 為 NULL,b 列中 10 % 為 NULL ,c 列中 90 % 為 NULL

● sql 語句樣例

其中 a 可換成 b 或者 c

● 網友觀點

觀點 1 :當 where 條件中出現 IS NULL 或者 IS NOT NULL,索引失效

觀點 2 :含有 NULL 的列不能創建索引,B + 樹不能存儲 NULL 值


● 通過 explain 命令分析

a 列中 99 % 為 NULL,b 列中 10 % 為 NULL ,c 列中 90 % 為 NULL

表1

從上述 sql 測試結果看:

● 當 where 條件中出現 IS NULL 或者 IS NOT NULL,索引失效。這句話是不正確。


關于索引是否存儲 NULL 值?

● 反方:索引不存儲 NULL值。

① 從表 1 中,當執行 explain 序號 1 時,使用了索引。在 表中存在大量 NULL 的情況下,去索引查詢,然后再回表查詢(一條條),效率還不如全表掃描(加載一個塊)。

② 從表 1 中,當執行 explain 序號 3 或者 4 時,如果索引存儲 NULL值,那么explain Extra 信息應該是 Using index,而實際情況是Using where;Using index,說明需要回表查詢。

● 正方:索引存儲 NULL 值。

如果 NULL 值不存儲在索引樹中,為什么會在 where IS NULL 條件下會去走索引,走索引說明定位到了為 NULL的值,至于反方所說的第二點,為什么明明是覆蓋索引,Extra 不顯示 Using index 的問題,因 NULL 是一種特殊的值,在索引樹中是經過復雜計算的,需要回表查詢。

>>>Python 之 MySql“未解之謎”13--都是 NULL 惹的禍(上)

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的where显示null行_Python 之 MySql“未解之谜”14-- 都是 NULL 惹的祸(下)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。