Предполагая, что это полный запрос ...
SELECT a.col1, b.col2
FROM tbl1 AS a
INNER JOIN tbl2 AS b ON a.col1 = b.col1
WHERE a.col3 = constant
Анализ:
Из-за предложения Where сначала будет рассматриваться tbl1, и это будет быть оптимальным индексом:
INDEX(col3, col1) == handles the WHERE, plus it is "covering"
Тогда для вложенного L oop Соединения в tbl2 потребуется индекс, начинающийся с col
:
INDEX(col1, col2) -- again "covering"
См. также http://mysql.rjweb.org/doc.php/index_cookbook_mysql
Заголовок («... охватывают две таблицы») обманчив. Ни один из этих индексов не включает более одной таблицы. INDEX(col2, col3)
невозможно, поскольку в нем задействовано более одной таблицы.