2014-07-02 107 views
1

我有用于7秒运行时过滤器标准是MySQL的性能减慢where子句

select * from table where date1 is null 

AA查询之后加入“或”,但是当我添加

select * from table where (date1 is null or (date1 < date2)) 

则查询需要32秒。如何提高此查询的性能?我在两个日期列上都有索引。

+2

您是否检查过两个查询的'EXPLAIN'的结果? – raina77ow

+1

尝试使用'UNION',取下'OR'并将其放入另一个选择 –

+0

是否为索引的字段? – Barranka

回答

0

您正在强制SQL先比较两个日期,然后才能评估其余条件。

你应该写这么见好转:

select * from table where date1 is null or date1 < date2 

这将使更快速的解决素养,因为病情会是真实的瞬间满足第一条件。

+0

这没有做出区别 – user1721546