SQL查询优化

时间:2011-05-14 10:43:30

标签: sql

我想优化以下语句,如果可能的话,最好优化为单个查询:

  

SELECT * FROM WHERE status ='x'AND a_date< NOW()ORDER BY a_date ASC LIMIT 1;   SELECT * FROM WHERE status ='y'ORDER BY a_date ASC LIMIT 1;

如果第一个语句返回NULL,则只应评估第二个语句。

我正确设置了索引,这是一个问题,我可以在应用程序逻辑检查空对象后发出单个语句而不是发出辅助语句。

感谢您的任何意见。

1 个答案:

答案 0 :(得分:2)

试试这个:

SELECT * FROM a WHERE (status = 'x' AND a_date < NOW()) OR (status = 'y')
ORDER BY status ASC, a_date ASC LIMIT 1;

这里你依赖于这样一个事实:状态'x'将以自然顺序出现在状态'y'之前(如果是相反的话,用ORDER BY status中的DESC更改ASC。