2013-09-28 5 views
28

У меня есть следующий запрос mySQL, который отлично работает. За исключением того, что мне нужно добавить «FORCE INDEX», и я не уверен, где я должен это делать. Я пробовал практически все места и всегда получаю ошибку mySQL. Что я делаю не так?FORCE INDEX mySQL ... где я могу его поместить?

Вот исходный запрос:

$sql_select_recent_items = $db->query("SELECT * FROM (SELECT owner_id, product_id, start_time, price, currency, name, closed, active, approved, deleted, creation_in_progress FROM db_products 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», в случае, если вам интересно.

Что мне надо добавить:

FORCE INDEX (products_start_time) 

Я попробовал почти везде без успеха, который заставляет меня верить, что есть нечто более сложное, что я не хватает?

ответ

39

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

индекс 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, чтобы получить l atest на owner_id, для этого вы используете нестандартное и недокументированное поведение MySQL.

Нет гарантии, что он будет продолжать работать в будущих версиях MySQL, и запрос, вероятно, будет ошибкой в ​​любых других СУБД.

Поиск тега для многих объяснений лучших решений для этого типа запросов.

+0

Большое вам спасибо! Это прекрасно работает и выполняет эту работу, пока я ищу лучшие решения :) – user2643870

Смежные вопросы