Existe-t-il un moyen (ou automatique) pour MySQL d'optimiser la moitié inférieure d'une requête UNION ALL si j'impose une instruction LIMIT sur le nombre de résultats qui doivent être retournés . Par exemple, si j'ai une requête en tant que tel:MySQL optimisera la moitié inférieure d'une requête union
SELECT ID FROM MyTable WHERE Match (NameColumn) Against ('seachterm')
UNION ALL
SELECT ID FROM MyTable WHERE (DescriptionColumn) Against ('seachterm')
LIMIT 10;
Si je lance cette requête et la première requête pour une correspondance au nom renvoie 15 résultats, il devrait y avoir aucune raison de courir même la deuxième requête, comme je ont déjà assez de résultats. Est-ce que MySQL optimise la deuxième requête, ou y a-t-il un moyen de lui dire de le faire? Basé sur l'exécution de la requête avec EXPLAIN EXTENDED à l'avant, il n'apparaît pas que la deuxième partie soit optimisée.
À quelle vitesse la dernière requête est-elle indépendante, mais avec 'LIMIT 10'? Parce que l'optimisation pourrait être plus dans les régions de: "si les résultats des requêtes" UNION "sont limitées à" n "lignes, chacune des requêtes peut être limitée à" n "lignes". – ontrack
Cela dépendrait vraiment de la rapidité avec laquelle les lignes ont été trouvées. Comme il s'agit d'une analyse de table, si les 10 premières lignes contenaient la chaîne recherchée, elle retournerait très vite. Cependant, si la table ne contenait pas du tout la chaîne, cela prendrait beaucoup de temps car il faudrait faire une analyse de table sur toutes les données. – Kibbee