我正在升级库存数据库,希望加快查询速度。大部分排序都在两列上,每列都是一个范围。例如。
SELECT ....
WHERE price BETWEEN 10.50 AND 34.20
AND date BETWEEN 1311264060 AND 1313942460
ORDER BY stockNo LIMIT 100
我知道,由于使用了范围,mysql只能在一列上使用索引。换言之,它可以使用索引来提取与价格范围匹配的记录,但随后必须使用表扫描来查找与日期范围匹配的记录。
我的想法是假装价格和数据是x轴和y轴,填充一列空间数据,并利用mysqls空间搜索和r树索引来提取数据。
有没有人有r-树的经验?这会让我加速吗?
最佳答案
r树最适用于维度具有类似含义的数据,例如地理坐标,并且您可以执行窗口查询,例如范围查询。
您的数据可能有一些影响,可能会损害r树,例如,价格将只有一些离散值,日期范围没有完全不同的规模。许多R树优化策略,如“体积”和“面积”,在实际计算价差和时差的乘积时,没有多大意义。
不过,r树可能仍然有效。但是你可能更喜欢kb树和类似的分裂树。我不确定mysql是否有这些功能,我不这么认为(它通常缺乏所有高级功能)。
关于mysql - 在MySQL中使用R树索引表示非空间数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8215741/