我正在读一本书,它以很高的水平涵盖了许多数据库主题,但是没有深入探讨。它引入了多列索引作为查询二维范围的更好方法。例如,如果latitude
和longitude
都具有单个列索引,则该查询被认为是无效的:
SELECT * FROM restaurants WHERE latitude > 51.4946 AND latitude < 51.5079 AND longitude > -0.1162 AND longitude < -0.1004;
更好的方法是使用跨R-trees
和latitude
的{{1}}的多列索引。
我不明白为什么先使用单列索引提取longitude
信息,然后使用其他单列索引提取信息latitude > 51.4946
效率低下的原因?执行查询时,每个表只能使用1个索引吗?还是有其他原因导致效率低下?