我有一個包含10列的表格,我需要支持大多數組合的範圍過濾器。MySQL索引創建
比方說,例如:
WHERE column_a >= a_min AND column_a <= a_max
AND column_b >= b_min AND column_b <= b_max
...
但是,這還不是全部,我也需要通過不同的列,以支持對數據進行排序。
我的問題是,考慮到可能的索引組合創建以優化搜索是巨大的,這是我可能的選擇嗎?
謝謝!
我有一個包含10列的表格,我需要支持大多數組合的範圍過濾器。MySQL索引創建
比方說,例如:
WHERE column_a >= a_min AND column_a <= a_max
AND column_b >= b_min AND column_b <= b_max
...
但是,這還不是全部,我也需要通過不同的列,以支持對數據進行排序。
我的問題是,考慮到可能的索引組合創建以優化搜索是巨大的,這是我可能的選擇嗎?
謝謝!
分別爲每個列創建索引。讓MySQL找出如何使用它們。
此外,在一個側面說明,在得到使用between
運營商的習慣:
column_a between a_min AND a_max
而不是:
column_a >= a_min AND column_a <= a_max -- ugly and the semantic is not as obvious
它更容易閱讀和類型和不準確同樣的事情。
爲查詢中使用的所有列創建索引。
(column_a,COLUMN_N)
見的範圍訪問方法在這裏多部分索引:http://dev.mysql.com/doc/refman/5.0/en/range-optimization.html
只要他沒有與所有領域的平等比較 - 根據你給出的鏈接,你會發現組合索引**不起作用**(或者確切地說 - 只使用第一列索引) – zerkms
你能做的唯一的事情 - 就是創建N個單指標(每列)。不要把這個答案,因爲好奇,如果有任何替代 – zerkms
@sebasuy,你期望你的桌子持有多少行?對於相對較小的表格,當掃描表格而不是通過索引訪問時,性能可能實際上會更好。 –
@Mark,表中會有很多記錄,我估計在6到10萬之間。謝謝。 – sebasuy