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

¿Cómo optimizar la base de datos de esta consulta en una base de datos grande?

No tiene ningún índice además de la clave principal. Debe crear un índice en los campos que usa en su declaración WHERE. Si necesita indexar solo 1 campo o una combinación de varios campos depende de los otros SELECT que ejecutará en esa tabla.

Tenga en cuenta que REGEXP no puede usar índices en absoluto, LIKE puede usar el índice solo cuando no comienza con un comodín (entonces LIKE 'a%' puede usar índice, pero LIKE '%a' no puede), mayor que / menor que (<>) por lo general no usan índices también.

Así que te queda el code y check los campos. Supongo que muchas filas tendrán el mismo valor para check , por lo que comenzaría el índice con code campo. Los índices de campos múltiples solo se pueden usar en el orden en que se definen...

Imagine el índice creado para los campos code, check . Este índice se puede usar en su consulta (donde la cláusula WHERE contiene ambos campos), también en la consulta con solo code campo, pero no en la consulta con solo check campo.

¿Es importante ORDER BY id ? De lo contrario, déjalo fuera, evitará que pase la ordenación y tu consulta terminará más rápido.