J'ai la requête suivante:MySQL multiples ou est dans OÙ
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;
je reçois le résultat que je suis après, mais la requête est très lent (~ 17s). Y a-t-il une meilleure façon de construire cette requête? Le champ ville est indexé dans la table business_table.
Vous ** ** pourrait utiliser un 'REGEXP' (' b.city REGEXP « Boston | Dallas | Seattle''), mais ce serait en fait probablement être légèrement plus lent. Cela ne devrait pas prendre 17 secondes cependant; Combien de lignes y a-t-il dans votre table? –
~ 32 000 lignes dans ma table – MoreScratch
Avez-vous essayé de mettre des parenthèses autour de votre liste OU? ou voulez-vous "le plus récent de Boston ... et tout de toutes les autres villes"? – Uueerdo