,我有以下形式的SQL表:检查是否在MySQL表中的两列相等太慢
| DateID | StartDate | EndDate | a lot more columns...
|--------|-----------|----------|----------------------
| 1 |2017-02-09 |2017-02-16| ...
| 2 |2017-02-10 | NULL | ...
| 3 |2017-02-08 |2017-02-08| ...
我经常遇到像Querys:
SELECT * FROM Dates
WHERE (EndDate IS NULL AND StartDate<='some date') OR
(StartDate=EndDate AND StartDate>='some date' AND (other conditions))
因为表包含几个千条记录,这个查询相当慢。有没有办法加快这一点?例如,使用仅包含具有相同StartDate和EndDate的日期的视图? StartDate和EndDate已被定义为索引,但这对我猜测的“StartDate = EndDate”部分没有帮助。
在此先感谢! :)
尝试创建2个querys避免'或' – SacrumDeus
性能问题应该包括'EXPLAIN ANALYZE'和有关表的大小,指数,当前时间的一些信息表现,欲望时间等。“慢”是一个相对术语,我们需要真正的价值来比较。 \t \t [** MySQL **](http://dba.stackexchange.com/questions/15371/how-do-i-get-the-execution-plan-for-a-view) –
MySQL index [ ** TIPS **](http://mysql.rjweb.org/doc.php/index_cookbook_mysql) –