我对索引在sql中的工作方式很熟悉,但据我所知,索引与连续变量(如纬度/经度,价格,时间等)不兼容。
我可以想到一些假设的方法来更快地搜索连续列,方法是按范围聚类或将它们存储排序,然后对它们进行二进制搜索。但是,我不知道sql是否支持这些方法。
答案 0 :(得分:1)
索引在连续变量上运行良好,它以与您的建议类似的方式实现它。索引存储在B +树中,树的叶子按顺序排列。因此,如果您进行范围查询,它们会非常快速地运行,因为它可以按顺序扫描树的叶子。
您可以通过多种方式告诉SQL实现此功能以获得性能改进,但默认情况下在大多数情况下都可以正常工作。
Lat / Long是一个不同的故事,因为你在两个维度上查询。例如 您可能会要求距离特定纬度/经度100英里范围内的所有商店。这些类型的字段最好存储在R树中。除了B +树之外,大多数RDBMS都会实现这一点。
答案 1 :(得分:0)
我想这取决于您要优化的查询类型。
假设您总是希望SELECT ... ORDER BY price
一个大致不变的表:您可以使用ALTER TABLE ... ORDER BY col
帮助后续查询排序(即减少时间)。