sql >> Base de Datos >  >> RDS >> Mysql

Optimización de consultas MySQL con el operador IN

El índice en categoryId no ayudará en este caso, las consultas IN (...) producirán un escaneo de secuencia en lugar de una búsqueda de índice de todos modos.

Primero consideraría rediseñar el sistema para eliminar la selección de categorías múltiples y, si no es apropiado, almacenar en caché los resultados de las consultas.

Por ejemplo, puede crear una tabla de ayuda items_category_groups(hash, item_id) y después de que el cliente consulte varias categorías, haga un hash de sus ID combinados y busque esta tabla. Si no lo encuentra, haga una consulta costosa y llene esta tabla. Si lo encuentra, haga una consulta barata uniendo estas tablas. Otras herramientas de almacenamiento en caché como memcached también funcionarán.