【发布时间】:2017-11-26 03:13:27
【问题描述】:
我有一个数据库,其中有四列对应于地理坐标 x,y 的开始和结束位置。列是:
- x0
- y0
- x1
- y1
我有这四列的索引,序列为 x0, y0, x1, y1。
我有一个包含大约一百个地理对组合的列表。我将如何有效地查询这些数据?
我想按照this SO answer 的建议做这样的事情,但它只适用于 Oracle 数据库,不适用于 MySQL:
SELECT * FROM my_table WHERE (x0, y0, x1, y1) IN ((4, 3, 5, 6), ... ,(9, 3, 2, 1));
我在想也许可以用索引做点什么?什么是最好的方法(即:最快的查询)?感谢您的帮助!
注意事项:
- 我无法更改数据库的架构
- 我有大约 100'000'000 行
编辑:
原样的代码实际上是可以工作的,但是它非常慢并且没有利用索引(因为我们有一个旧版本的 MySQL v5.6.27)。
【问题讨论】:
-
这在 MySQL 中应该可以正常工作,你试过了吗?我看到的第一条评论说你链接的问题是 5 年前的。
-
您知道,您可以在 MySQL 中执行此操作。查看我的测试:sqlfiddle.com/#!9/7b5c1/1