sql >> Databáze >  >> RDS >> Mysql

FORCE INDEX v MySQL – kam ho mám dát?

Syntaxe pro index rady jsou zdokumentovány zde:
http:// dev.mysql.com/doc/refman/5.6/en/index-hints.html

FORCE INDEX jde hned za odkaz na tabulku:

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

UPOZORNĚNÍ:

Pokud používáte ORDER BY před GROUP BY abyste získali nejnovější záznam podle owner_id , používáte k tomu nestandardní a nezdokumentované chování MySQL.

Neexistuje žádná záruka, že bude i nadále fungovat v budoucích verzích MySQL a dotaz bude pravděpodobně chybný v jakémkoli jiném RDBMS.

Vyhledejte tag pro mnoho vysvětlení lepších řešení pro tento typ dotazu.



  1. Porovnejte pouze den a měsíc s datem v mysql

  2. Mysql se změní ' na â € ™?

  3. Kontrola maximální délky po sobě jdoucích dnů, které splňují konkrétní podmínku

  4. Pole objektů třídy VBA Ms-Access