Mysql
 sql >> база данни >  >> RDS >> Mysql

FORCE INDEX в MySQL - къде да го сложа?

Синтаксисът за индекс съветите са документирани тук:
http:// dev.mysql.com/doc/refman/5.6/en/index-hints.html

FORCE INDEX отива непосредствено след препратката към таблицата:

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

ПРЕДУПРЕЖДЕНИЕ:

Ако използвате ORDER BY преди GROUP BY за да получите най-новия запис за owner_id , за това използвате нестандартно и недокументирано поведение на MySQL.

Няма гаранция, че ще продължи да работи в бъдещи версии на MySQL и е вероятно заявката да е грешка във всяка друга RDBMS.

Потърсете в tag за много обяснения за по-добри решения за този тип заявка.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да създадете база данни от командата на shell?

  2. Как да преименувате база данни в MySQL

  3. Промяна на това от MySQL на MySQLi?

  4. MySQL:ГРЕШКА 1022 (23000):Не мога да пиша; дублиран ключ в таблица '#sql-2b8_2'

  5. Как да запазите историята на актуализациите на записи в MySQL?