gpt4 book ai didi

mysql - 有没有更好的方法来执行此 MySQL 查询?

转载 作者:行者123 更新时间:2023-11-29 18:27:26 25 4
gpt4 key购买 nike

我想知道执行如下所示的 MySQL 语句的最有效方法是什么

SELECT id FROM something WHERE x IN 
(58, 285, 287, 1928, 175, 1928, 2, 481, 2851, 2875, 21, 498, 582, 198, 18)
AND y IN (57, 28, 29, 85, 101, 587, 201, 598, 982, 105, 78, 92, 100, 200, 909,
1120, 592, 109, 581, 2752, 581, 201, 510 700);

[x, y]上有一个复合索引

似乎有一种更有效的方法可以做到这一点,但我不确定。

最佳答案

使用 IN() 并在每个列表中包含 100 个整数,这对查询来说并不算太多,特别是如果 x 和 y 已适当索引的话。将这些列表持久保存到表中的任何优势可能都不值得付出努力,除非它们稳定或很少更改(并且不同的用户不需要每个导致并发问题的唯一列表)。

需要注意的一件事是,这两个独立列表不会被评估为元组,如以下尝试演示的那样:

SQL Fiddle

MySQL 5.6 架构设置:

CREATE TABLE something 
(`x` int, `y` int)
;

INSERT INTO something
(`x`, `y`)
VALUES
(58, 57),
(58, 28),
(58, 29),
(58, 30),
(58, 31)
;

查询 1:

SELECT *
FROM `something`
WHERE x IN (58)
AND y IN (57, 28, 29)

<强> Results :

|  x |  y |
|----|----|
| 58 | 57 |
| 58 | 28 |
| 58 | 29 |

查询 2:

SELECT *
FROM `something`
WHERE (x,y) IN ((58,28),(58,29))

<强> Results :

|  x |  y |
|----|----|
| 58 | 28 |
| 58 | 29 |

也许不是最好的例子,但希望有用。

关于mysql - 有没有更好的方法来执行此 MySQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46046659/

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