2011-05-14 141 views
2

我想优化下面的语句,优选到一个查询如果可能的话:SQL查询优化

SELECT * FROM一个WHERE状态= 'X' 和a_date < NOW()ORDER BY a_date ASC限制1; SELECT * FROM WHERE status ='y'ORDER BY a_date ASC LIMIT 1;

其中第二条语句只应在第一条语句返回NULL时才被评估。

我有索引设置正确,这是更多的问题我可以发出一个单一的声明,而不是发出一个次要语句后,应用程序逻辑检查空对象。

感谢您的任何意见。

+0

有一个家庭作业标签,如果你的问题符合描述。 – 2011-05-14 10:46:28

回答

2

试试这个:

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

在这里,你依靠事实状态的“x”将状态前的“是”自然秩序来(如果它是周围的其他方式,改变ASC在ORDER BY status DESC

+0

好的。谢谢Costi,这工作。 – 2011-05-14 14:42:40