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

Cuándo usar STRAIGHT_JOIN con MySQL

No recomendaría usar STRAIGHT_JOIN sin una buena razón. Mi propia experiencia es que el optimizador de consultas de MySQL elige un plan de consulta deficiente con más frecuencia de lo que me gustaría, pero no lo suficiente como para que debas omitirlo en general, que es lo que harías si siempre usaras STRAIGHT_JOIN.

Mi recomendación es dejar todas las consultas como JOIN regulares. Si descubre que una consulta está utilizando un plan de consulta subóptimo, le sugiero que primero intente reescribir o reestructurar un poco la consulta para ver si el optimizador elegirá un mejor plan de consulta. Además, al menos para innodb, asegúrese de que las estadísticas de su índice no estén desactualizadas (ANALIZAR TABLA ). Eso puede hacer que el optimizador elija un plan de consulta deficiente. Las sugerencias del optimizador generalmente deberían ser su último recurso.

Otra razón para no usar sugerencias de consulta es que la distribución de datos puede cambiar con el tiempo, o la selectividad de su índice puede cambiar, etc. a medida que crece su tabla. Sus sugerencias de consulta que son óptimas ahora, pueden volverse subóptimas con el tiempo. Pero el optimizador no podrá adaptar el plan de consulta debido a sus sugerencias ahora desactualizadas. Te mantienes más flexible si permites que el optimizador tome las decisiones.