カイリー:
それは、テーブルにまたがるカバーするインデックスを作成することは可能ですか?私はこのクエリを最適化するとします:
SELECT tbl1.col1,
tbl2.col2
FROM tbl1 INNER JOIN
tbl2 ON tbl1.col1 = tbl2.col1
WHERE tbl1.col3 = ...
これらのインデックスのヘルプを作成するのでしょうか?
INDEX (col3, col1) -- tbl1's
INDEX (col1, col2) -- tbl2's
リック・ジェームス:
これは完全なクエリであると仮定すると、 ...
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"
そして、ネステッド・ループが始まるインデックスが必要になりますTBL2に参加しますcol
:
INDEX(col1, col2) -- again "covering"
参照してくださいhttp://mysql.rjweb.org/doc.php/index_cookbook_mysql
タイトル(「...スパンの2つの表は、」)欺瞞です。これらのインデックスのどちらも1台以上を必要とします。INDEX(col2, col3)
それは複数のテーブルを含むのでことはできません。