2011-11-21 97 views
3

我正在升級庫存數據庫並希望加快查詢速度。大部分的排序是在2列,每列是一個範圍。例如。在MySQL中對非空間數據使用R-tree索引

SELECT .... 
WHERE price BETWEEN 10.50 AND 34.20 
AND date BETWEEN 1311264060 AND 1313942460 
ORDER BY stockNo LIMIT 100 

據我所知,因爲使用了範圍,MySQL只能在一列上使用索引。換句話說,它可以使用索引來提取與價格範圍匹配的記錄,但必須使用表掃描來查找與日期範圍匹配的記錄。

我假裝價格和數據是x軸和y軸,並填充空間數據列,並利用MySQL的空間搜索和R-TREE索引來提取數據。

有沒有人有R-TREES的經驗?這可能會讓我加速嗎?

回答

2

R-樹適用於尺寸具有類似含義的數據,例如,地理座標,您可以進行窗口查詢,如範圍查詢。

您的數據可能會有一些可能會損害R樹的效果,例如價格只會有一些離散值並且日期範圍沒有完全不同的比例。許多R-tree優化策略(如「體積」和「面積」)在實際計算價格差異和時間差的乘積時沒有多大意義。

雖然R-tree可能仍然有效。但是,用kB樹和類似的分裂樹可能會更好。不知道MySQL是否有這些,我不這麼認爲(它通常缺乏所有高級功能)。