sql >> Database >  >> RDS >> Mysql

FORCE INDEX in MySQL - waar plaats ik het?

De syntaxis voor index hints is hier gedocumenteerd:
http:// dev.mysql.com/doc/refman/5.6/en/index-hints.html

FORCE INDEX gaat direct na de tabelreferentie:

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

WAARSCHUWING:

Als u ORDER BY . gebruikt voor GROUP BY om de laatste invoer te krijgen per owner_id , gebruik je een niet-standaard en ongedocumenteerd gedrag van MySQL om dat te doen.

Er is geen garantie dat het zal blijven werken in toekomstige versies van MySQL, en de query is waarschijnlijk een fout in een ander RDBMS.

Zoek in de tag voor veel uitleg van betere oplossingen voor dit type zoekopdracht.



  1. Vergelijken met datum in Oracle sql

  2. Hoe u een SQL-tracering maakt om SQL Server-gebeurtenissen vast te leggen

  3. Mysql SELECT binnen UPDATE

  4. Is er een manier om een ​​voorbereide query te zien zoals deze in de database wordt uitgevoerd?