sql >> Database teknologi >  >> RDS >> Mysql

FORCE INDEX i MySQL - hvor skal jeg placere det?

Syntaksen for indeks hints er dokumenteret her:
http:// dev.mysql.com/doc/refman/5.6/en/index-hints.html

FORCE INDEX går lige efter tabelhenvisningen:

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

ADVARSEL:

Hvis du bruger ORDER BY før GROUP BY for at få den seneste post pr. owner_id , du bruger en ikke-standardiseret og udokumenteret adfærd fra MySQL til at gøre det.

Der er ingen garanti for, at det vil fortsætte med at fungere i fremtidige versioner af MySQL, og forespørgslen vil sandsynligvis være en fejl i enhver anden RDBMS.

Søg i tag for mange forklaringer på bedre løsninger til denne type forespørgsler.



  1. Python3.4 kan ikke installere mysql-python

  2. Halloween-problemet – del 1

  3. nvarchar(max) vs NText

  4. Kald en lagret procedure for hver række, der returneres af en forespørgsel i MySQL