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

L'utilisation de IN avec une sous-requête n'utilise pas l'index

Vous pouvez voir les réponses à cette question Vous aurez des idées fines.

Je cite quelques réponses

En bref, essayez de forcer l'index :

SELECT *
FROM mapping_channel_fqdn_virtual_host FORCE INDEX (name of the index you want to use)
WHERE (mapping_channel_fqdn_virtual_host.id IN (1,2,3,4,5,6,7,8,9,10));

Ou utilisez JOIN à la place et voyez l'explication

SELECT * FROM mapping_channel_fqdn_virtual_host mcf
JOIN (select max(id) as ids from mapping_channel_fqdn_virtual_host group by channel_id, fqdn_virtual_host_id)) AS mcfv 
ON mcf.id = mcfv.ids;