Используйте синтаксис JOIN .. ON ..
, а не старый коммалистский синтаксис. После этого будет легко увидеть, что используется для JOINing
по сравнению с тем, что используется для «фильтрации» (WHERE
).
Я подозреваю, что единственная вещь в WHERE
будет
Stats.touchdowns >= 6
Учитывая, что оптимизатор , вероятно, будет использовать Stats
в качестве первой таблицы и использовать фильтр touchdowns
. Итак, имейте
INDEX(touchdowns)
Доступ к другим таблицам, вероятно, будет осуществляться с использованием NLJ (Nested Loop Join), по одной таблице за раз.
Итак, убедитесь, что существует индекс (или PRIMARY KEY
) в каждой последующей таблице, позволяя ей использовать значение из предыдущей таблицы, чтобы попасть в следующую таблицу.
OR
- крушение поезда. Я не знаю, что случится с этим. Пожалуйста, укажите EXPLAIN SELECT ...
и SHOW CREATE TABLE
(для каждой таблицы).
Ваш вопрос задается как «индексный» вопрос. Если, в конечном счете, речь идет об ускорении запроса, то так и укажите. В этом случае я могу предложить превратить OR
в UNION
.
Простое создание индекса рассматривается здесь: http://mysql.rjweb.org/doc.php/index_cookbook_mysql