Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

FORCE INDEX no MySQL - onde coloco?


A sintaxe para índice dicas estão documentadas aqui:
http:// dev.mysql.com/doc/refman/5.6/en/index-hints.html

FORCE INDEX vai logo após a referência da tabela:
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

AVISO:

Se você estiver usando ORDER BY antes de GROUP BY para obter a entrada mais recente por owner_id , você está usando um comportamento não padrão e não documentado do MySQL para fazer isso.

Não há garantia de que continuará funcionando em versões futuras do MySQL, e a consulta provavelmente será um erro em qualquer outro RDBMS.

Pesquise no tag para muitas explicações de melhores soluções para este tipo de consulta.