我一直在研究指標並不能完全理解MYSQL如何能夠使用索引在所有的像如何MySQL的穿越複合B樹索引的IN()和()搜索
IN() AND IN() ... AND IN()
聲明
這本書我讀表明,當我們有(a
,b
,...),但用戶想搜索b
的指標,我們有一個a
低基數,我們可以使用一個技巧和簡單的添加IN( )
WHERE a IN ('x1', 'x2', ... 'all possible values go here') AND `b`>123
讓的說我們有以下數據
x1 1
x1 4
x1 456
x2 5
x3 1
x3 2
x3 3
x4 1234
如何遍歷此樹來滿足上面的查詢?它是否簡單地爲IN-s創建所有可能的組合,並且幾乎遍歷每個這些查詢的樹?
WHERE `a`='x1' AND `b`>123
WHERE `a`='x2' AND `b`>123
...
因此使有限的有用的這一招,因爲由於在-S的數量增加,所有可能的IN組合的數量急劇增加,我們必須通過B樹的每個組合的運行?如果以上情況屬實,這是否意味着有一些理論上的觀點,用IN來欺騙索引的速度會慢於根本不使用索引?