gpt4 book ai didi

IN 子句中的 MySQL 多列

转载 作者:IT老高 更新时间:2023-10-29 00:19:12 25 4
gpt4 key购买 nike

我有一个数据库,其中有四列对应于开始和结束位置的地理坐标 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)。

最佳答案

为了有效利用索引,可以重写IN谓词

(x0, y0, x1, y1) IN ((4, 3, 5, 6),(9, 3, 2, 1))

像这样:

(  ( x0 = 4 AND y0 = 3 AND x1 = 5 AND y1 = 6 ) 
OR ( x0 = 9 AND y0 = 3 AND x1 = 2 AND y1 = 1 )
)

关于IN 子句中的 MySQL 多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44706196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com