我的问题是怎样才能加快速度。应该有更优雅的处理方法。内部选择是在0038秒完成,但这一个是在6007秒完成我不知道如何才能提高这个性能
select * FROM table
where number1 in (
SELECT number1
FROM table
WHERE `date` = 'yyyy-mm-dd'
AND value1 = 'variable1'
AND value2 = 1
)
问题是,如果value2中包含变量1,我需要来自同一个表的值的范围
所以从那张table开始
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
1条答案
按热度按时间dwthyt8l1#
可以将其转换为与exists相关的子查询。在这种情况下,mysql优化器可能能够使用索引(如果定义的话)。
如果未定义索引,则可以在上定义复合索引
(number1, date, value1, value2)
,以获得更好的性能。另一种优化方法是只获取应用程序代码中真正需要的列。避免使用
SELECT *
. 你可能会读到:为什么select*被认为是有害的?