我正在寫一個網頁,確實非常簡單的搜索查詢,結果是這樣的:實際上會使用多少個索引?
SELECT * FROM my_table WHERE A in (a1, a2, a3) AND B in (b1, b2) AND C in (c1, c2, c3, c4) AND
等了列的變量數,通常〜5。如果我爲每列創建一個單獨的索引(一個用於A,一個用於B,一個用於C,而不是(A,B,C)),是否將在上面的查詢中使用它們?
我正在寫一個網頁,確實非常簡單的搜索查詢,結果是這樣的:實際上會使用多少個索引?
SELECT * FROM my_table WHERE A in (a1, a2, a3) AND B in (b1, b2) AND C in (c1, c2, c3, c4) AND
等了列的變量數,通常〜5。如果我爲每列創建一個單獨的索引(一個用於A,一個用於B,一個用於C,而不是(A,B,C)),是否將在上面的查詢中使用它們?
優化器將嘗試使用Index Merge操作並使用三個索引。
在EXPLAIN
之前執行語句以查看它可以使用的索引,並使用它。考慮FORCE INDEX
,看看它是否有所作爲。
EXPLAIN SELECT * FROM my_table WHERE A in (a1, a2, a3) AND B in (b1, b2) AND C in (c1, c2, c3, c4) AND
只是檢查:
EXPLAIN SELECT * FROM ...;
你會得到執行的查詢,其類型的列表,使用的索引,等等...