我正在使用请求从10个表中选择数据,并且最后我有WHERE和2个条件 第一个很简单,但第二个很慢,即使有没有结果返回。来自多个表的MySQL请求由于WHERE过滤器而变得缓慢
AND (eligible_users.id IS NULL OR
((eligible_users.program = 3 AND eligible_users.status = 0)
OR eligible_users.status = 35))
当我将其删除,页面加载速度快很多,有一些方法,使其更快,但仍保持这种过滤器,因为我需要它。
你在查询上运行EXPLAIN了吗?它说什么? – jasonbar
也许你需要在你的“状态”列上有一个索引。你可以像这样添加它:'CREATE INDEX status_index ON eligible_users(status);' –
另外,我第二个@jasonbar说的。 EXPLAIN的输出将解释你的查询是如何评估的。它会告诉你,如果你在任何地方缺少索引。 –