Base de datos

Using index, using temporary, using filesort – ¿Cómo arreglarlo?

Las tablas temporales se pueden crear en condiciones como estas:

  • Si hay una cláusula ORDER BY y una cláusula GROUP BY diferente, o si ORDER BY o GROUP BY contiene columnas de tablas distintas de la primera tabla en la cola de unión, se crea una tabla temporal.
  • DISTINCT combinado con ORDER BY puede requerir una tabla temporal.
  • Si usa la opción SQL_SMALL_RESULT, MySQL usa una tabla temporal en memoria, a menos que la consulta también contenga elementos (descritos más adelante) que requieren almacenamiento en disco
  • «Usar filesort» significa que la clasificación no se puede realizar con un índice. Si se está ordenando por un campo calculado, eso también será cierto.

Actualizado para MySQL 5.7 (fuente):

  • El servidor crea tablas temporales en condiciones como estas:
  • Evaluación de declaraciones de UNION, con algunas excepciones que se describen más adelante.
  • Evaluación de algunas vistas, como las que usan el algoritmo TEMPTABLE, UNION o agregación.
  • Evaluación de tablas derivadas (subconsultas en la cláusula FROM).
  • Tablas creadas para materialización de subconsulta o semiunión (consulte la Sección 8.2.2, “Optimización de subconsultas, tablas derivadas y ver referencias”).
  • Evaluación de declaraciones que contienen una cláusula ORDER BY y una cláusula GROUP BY diferente, o para las cuales ORDER BY o GROUP BY contienen columnas de tablas distintas de la primera tabla en la cola de unión.
  • La evaluación de DISTINCT combinada con ORDER BY puede requerir una tabla temporal.
  • Para las consultas que usan el modificador SQL_SMALL_RESULT, MySQL usa una tabla temporal en memoria, a menos que la consulta también contenga elementos (descritos más adelante) que requieren almacenamiento en disco.
  • Para evaluar las instrucciones INSERT … SELECT que seleccionan e insertan en la misma tabla, MySQL crea una tabla temporal interna para contener las filas de SELECT, luego inserta esas filas en la tabla de destino. Consulte la Sección 13.2.5.1, «INSERTAR … SELECCIONAR Sintaxis».
  • Evaluación de declaraciones UPDATE de tablas múltiples.
  • Evaluación de expresiones GROUP_CONCAT () o COUNT (DISTINCT).

¿Cómo arreglarlo?

Añadiendo nuevos índices, modificando las queries SQL o cambiando la forma cómo se guarda la información. ¿Quizá un nuevo campo estático para un contador, en vez de contar todo cada vez? quizá un index mejor que ORDER BY ?

Beto López
Ingeniero de Software y programador web "Full stack" que ha dejado una startup dónde los miércoles eran día de yoga, para construir un servicio de soporte técnico estandarizado low cost, más profundo que el que el servicio que ofrecen las compañias de hosting, para particulares, autónomos y empresas digitales. Web Personal, LinkedinTwitter.


Using index, using temporary, using filesort – ¿Cómo arreglarlo?
Te respondemos rapidamente
Contacta

Atención y comunicación
Estamos aquí para ayudar. El responsable de ventas también es programador. Incluso coge el teléfono y responde por whatsapp

Expertos en WordPress y Prestashop
Programadores expertos de cada tema para resolver mejor y más rápido. Project Manager + Programador + Q/A Testing

24/7/365
Porqué los problemas aparecen en los peores momentos. De Lunes a Viernes de 9h a 18h contestamos más rápido

Do NOT follow this link or you will be banned from the site!
Php Ninja