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查询优化的主要内容,如果未能解决你的问题,请参考以下文章

数据库牛人是如何进行SQL优化的?

SQL多个表联合查询优化的问题

DBA的五款最佳SQL查询优化工具

优化SQL查询:如何写出高性能SQL语句

SQL优化----百万数据查询优化

一文终结SQL 子查询优化