Как вызвать индекс на внутренних объединяемых таблицах?

Как я вызываю индексы на запросе, подобном этому. Я должен вызвать индекс на нечто и панели индивидуально.

SELECT foo.*, bar.*
FROM foo
INNER JOIN bar ON foo.rel_id = bar.rel_id
WHERE foo.status = 1
  AND bar.status = 1
16
задан Peter Lang 22 February 2010 в 10:00
поделиться

2 ответа

Предполагая, что индекс 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

28
ответ дан 30 November 2019 в 21:10
поделиться

Самым очевидным было бы создание покрывающего индекса для rel_id и status обеих таблиц для удовлетворения требований соединения и места.

Что вы пробовали до сих пор?

редактировать

Вы предоставляете подсказок по индексу , но суть каждого ответа, кажется, заключается в том, что вам не следует этого делать.

Начиная с MySQL 4.0.9, вы также можете использовать FORCE INDEX, который действует как USE INDEX (index_list), но с добавлением , что предполагается сканирование таблицы быть очень дорогим. Другими словами, просмотр таблицы используется только в том случае, если нет способа использовать один из заданных индексов для поиска строк в таблице.

0
ответ дан 30 November 2019 в 21:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: