whats primary not index force ejemplos create mysql indexing greatest-n-per-group

primary - FORCE INDEX mySQL... ¿dónde lo pongo?



mysql not using index (1)

Tengo la siguiente consulta mySQL que funciona perfectamente bien. Excepto que necesito agregar un "ÍNDICE DE FUERZA" y no estoy seguro de dónde tengo que hacer esto. Intenté casi todas las ubicaciones y siempre recibo un error mySQL. ¿Qué estoy haciendo mal?

Aquí está la consulta original:

$sql_select_recent_items = $db->query("SELECT * FROM (SELECT owner_id, product_id, start_time, price, currency, name, closed, active, approved, deleted, creation_in_progress FROM db_products 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");

La consulta se construye de esta manera para que pueda hacer el "ORDER BY" antes de "GROUP BY", en caso de que se lo esté preguntando.

Lo que necesito agregar es:

FORCE INDEX (products_start_time)

Lo intenté casi en todas partes sin éxito, lo que me lleva a pensar que me falta algo más complejo.


La sintaxis para las sugerencias de índice está documentada aquí:
http://dev.mysql.com/doc/refman/5.6/en/index-hints.html

Índice índice ir a la derecha 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á utilizando 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 continuará funcionando en futuras versiones de MySQL, y es probable que la consulta sea un error en cualquier otro RDBMS.

Busque la etiqueta de greatest-n-per-group para obtener muchas explicaciones de mejores soluciones para este tipo de consulta.