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

FORCE INDEX en MySQL:¿dónde lo pongo?

La sintaxis de índice las sugerencias se documentan aquí:
http:// dev.mysql.com/doc/refman/5.6/en/index-hints.html

FORCE INDEX va justo después de la referencia de la tabla:

SELECT * FROM (
    SELECT owner_id,
           product_id,
           start_time,
           price,
           currency,
           name,
           closed,
           active,
           approved,
           deleted,
           creation_in_progress
    FROM db_products FORCE INDEX (products_start_time)
    ORDER BY start_time DESC
) as resultstable
WHERE resultstable.closed = 0
      AND resultstable.active = 1
      AND resultstable.approved = 1
      AND resultstable.deleted = 0
      AND resultstable.creation_in_progress = 0
GROUP BY resultstable.owner_id
ORDER BY start_time DESC

ADVERTENCIA:

Si estás usando ORDER BY antes de GROUP BY para obtener la última entrada por owner_id , está utilizando un comportamiento no estándar e indocumentado de MySQL para hacerlo.

No hay garantía de que seguirá funcionando en futuras versiones de MySQL, y es probable que la consulta sea un error en cualquier otro RDBMS.

Busque etiqueta para muchas explicaciones de mejores soluciones para este tipo de consulta.