gpt4 book ai didi

mysql - 如果其中之一在 Mysql 中具有特定变量,如何改进选择值范围

转载 作者:行者123 更新时间:2023-11-30 21:37:06 25 4
gpt4 key购买 nike

我的问题是如何加快速度。应该有更优雅的方式来处理它。内部选择在 0,038 秒内完成,但这个选择在 6,007 秒内完成,我不知道如何提高此性能

select * FROM table
where number1 in (
SELECT number1
FROM table
WHERE `date` = 'yyyy-mm-dd'
AND value1 = 'variable1'
AND value2 = 1
)

问题是,如果在 value2 中包含变量 1,我需要同一张表中的值范围

所以从这样的表

id|number1| value1   | value2
1 | 11403 | exempl1 | null
2 | 11404 | exempl1 | 1
3 | 11404 | exempl1 | null
4 | 11405 | exempl1 | null
5 | 11405 | exempl1 | null

我只有这个

id|number1| value1   | value2
2 | 11404 | exempl1 | 1
3 | 11404 | exempl1 | null

最佳答案

你可以把它转换成Correlated Subquery with Exists .在这种情况下,MySQL 优化器可能能够使用索引(如果已定义)。

SELECT t1.* 
FROM table AS t1
WHERE EXISTS( SELECT 1
FROM table AS t2
WHERE t2.number1 = t1.number1 AND
t2.`date` = 'yyyy-mm-dd' AND
t2.value1 = 'variable1' AND
t2.value2 = 1 )

如果未定义索引,您可以在(number1, date, value1, value2) 上定义一个复合索引,以获得更好的性能。

ALTER TABLE `table`
ADD INDEX comp_idx1(number1, `date`, value1, value2);

另一种优化可能性是只获取应用程序代码中真正需要的那些列。避免使用 SELECT *。您可能会读到:Why is SELECT * considered harmful?

关于mysql - 如果其中之一在 Mysql 中具有特定变量,如何改进选择值范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53388731/

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