2011-05-14 137 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