![](/img/trans.png)
[英]how data stored in b-tree for composite key in mysql? i want to know about tree representation of data
[英]Whether null value is stored on B + tree in MySQL?
mysql 5.7 innodb
EXPLAIN SELECT a FROM test
WHERE a IS NULL;
a 可以為空,a 為普通索引;我們可以看到: 額外信息:使用 where;使用索引; 這意味着索引存儲空值?
在分析索引時,將NULL
視為“只是另一個值”。
您特定的SELECT
沒有做太多事情。 它將執行“索引掃描”,因為所需的所有列(只是a
)都在INDEX inx_a (a)
(您顯然擁有)中。 也就是說,索引是“覆蓋”的。 它不應該需要“完整索引掃描”(查看所有“行”)。
是NULL
值將首先出現在索引中; 它應該執行“索引掃描”,例如:
NULL
以外的其他內容; 交付a
. 在某些情況下,優化器會避開明顯的INDEX
而只是進行“表掃描”,但這里似乎並非如此。 例如,因為大多數行都有a IS NULL
,以下很可能會忽略索引並進行表掃描:
SELECT a,b FROM t WHERE a IS NULL
OTOH, INDEX(a,b)
將是一個“覆蓋索引”,它應該在索引中進行“范圍掃描”。
如果您想進一步討論,請提供SHOW CREATE TABLE
,作為文本而不是圖像。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.