我有以下查询:MySQL的多个或在WHERE
SELECT
b.business_name,
b.address,
b.city,
b.state,
b.phone_number,
i.date
FROM business_table b
LEFT JOIN inspection_table i ON b.id = i.business_id
WHERE i.date = (
SELECT MAX(i.date)
FROM inspection_table i
WHERE b.id = i.business_id
)
AND b.city LIKE '%Boston%'
OR b.city LIKE '%Dallas%'
OR b.city LIKE '%Seattle%'
OR b.city LIKE '%New York%'
OR b.city LIKE '%Portland%'
OR b.city LIKE '%San Antonio%'
OR b.city LIKE '%Los Angeles%'
OR b.city LIKE '%Miami%'
ORDER BY i.date DESC;
我得到的结果我之后,但在查询速度很慢(〜17S)。有没有更好的方法来构造这个查询?城市字段在business_table中编入索引。
你** **可以使用'REGEXP'('b.city REGEXP“波士顿|达拉斯| Seattle''),但会实际上可能会稍微慢一些。它不应该花17秒,你的桌子有多少行? –
〜我的表中有32,000行 – MoreScratch
您是否尝试过将括号放在您的OR列表中;还是你想要“最近来自波士顿...以及其他所有城市的一切”? – Uueerdo