Как я вызываю индексы на запросе, подобном этому. Я должен вызвать индекс на нечто и панели индивидуально.
SELECT foo.*, bar.*
FROM foo
INNER JOIN bar ON foo.rel_id = bar.rel_id
WHERE foo.status = 1
AND bar.status = 1
Предполагая, что индекс a существует на foo и index b на bar:
SELECT foo.*, bar.*
FROM foo FORCE INDEX (a)
INNER JOIN bar FORCE INDEX (b) ON foo.rel_id = bar.rel_id
WHERE foo.status = 1
AND bar.status = 1
принудительно выберет индекс на MySql
Самым очевидным было бы создание покрывающего индекса для rel_id
и status
обеих таблиц для удовлетворения требований соединения и места.
Что вы пробовали до сих пор?
Вы предоставляете подсказок по индексу , но суть каждого ответа, кажется, заключается в том, что вам не следует этого делать.
Начиная с MySQL 4.0.9, вы также можете использовать FORCE INDEX, который действует как USE INDEX (index_list), но с добавлением , что предполагается сканирование таблицы быть очень дорогим. Другими словами, просмотр таблицы используется только в том случае, если нет способа использовать один из заданных индексов для поиска строк в таблице.