Mysql
 sql >> Baza danych >  >> RDS >> Mysql

FORCE INDEX w MySQL - gdzie go umieścić?

Składnia indeksu wskazówki są udokumentowane tutaj:
http:// dev.mysql.com/doc/refman/5.6/en/index-hints.html

FORCE INDEX pojawia się zaraz po odnośniku do tabeli:

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

OSTRZEŻENIE:

Jeśli używasz ORDER BY przed GROUP BY aby uzyskać najnowszy wpis na owner_id , używasz do tego niestandardowego i nieudokumentowanego zachowania MySQL.

Nie ma gwarancji, że będzie nadal działać w przyszłych wersjach MySQL, a zapytanie może być błędem w każdym innym RDBMS.

Wyszukaj tag dla wielu wyjaśnień lepszych rozwiązań dla tego typu zapytań.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Łączenie wyniku dwóch zapytań mysql

  2. Codeigniter:Błąd w zapytaniu ORDER BY CASE

  3. php zmienna pętli while dla co trzeciego div

  4. Mysql nie uruchamia się - ibdata1 jest uszkodzony? - błąd systemu operacyjnego numer 13 - problem z uprawnieniami

  5. Jak wykryć, że transakcja została już rozpoczęta?