Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL peut-il utiliser des index lorsqu'il y a OR entre les conditions ?

Le plan de requête pour le OR la casse apparaît pour indiquer que MySQL utilise en effet des index, donc évidemment oui, il peut le faire, du moins dans ce cas. Cela semble tout à fait raisonnable, car il existe un index sur seen , et id est le PK.

Si les "explications logiques et raisonnables" sont contredites par la réalité, alors il est prudent de supposer que la logique est erronée ou que les explications sont erronées ou inapplicables. Les performances sont notoirement difficiles à prévoir; les tests de performance sont essentiels là où la vitesse est importante.

Vous devriez utiliser celui qui teste plus rapide sur une entrée qui modélise de manière adéquate ce que le programme verra en utilisation réelle.

Notez également, cependant, que vos deux requêtes ne sont pas sémantiquement équivalentes :si la ligne avec id = 5204 a aussi seen = 3 puis le OR la requête le renverra une fois, mais le UNION ALL la requête le renverra deux fois. Il est inutile de choisir entre le code correct et le code incorrect sur une autre base que celle qui est correcte.