SQL查询优化
Posted
技术标签:
【中文标题】SQL查询优化【英文标题】:SQL query optimisation 【发布时间】:2011-05-14 10:43:29 【问题描述】:我想优化以下语句,如果可能的话,最好是单个查询:
SELECT * FROM a WHERE status = 'x' AND a_date
只有当第一个语句返回 NULL 时才应评估第二个语句。
我已经正确设置了索引,这更多是一个问题,我可以在应用程序逻辑检查空对象后发出单个语句而不是发出辅助语句。
感谢您的任何意见。
【问题讨论】:
如果您的问题符合描述,则有一个作业标签。 【参考方案1】:试试这个:
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
中将 ASC 更改为 DESC。
【讨论】:
以上是关于SQL查询优化的主要内容,如果未能解决你的问题,请参考以下文章