我有一个数据库,其中有四列,分别对应起始和结束位置的地理坐标x,y。列是:IN子句中的MySQL多列
- 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年前。 – Uueerdo
只要你知道,你**可以**在MySQL中做到这一点。看到我的测试:http://sqlfiddle.com/#!9/7b5c1/1 – sorayadragon