当在正常 table 和来自索引 table 的 select 之间执行内部联接时,索引是否有用

Will indexing be useful when Inner join is performed between normal table and a select from indexed table

假设我有小 table(t1) 和大 table(t2)。我已经索引了 t2 的 column1 和 column2。如果我想 INNER JOIN t1 and (select * from t2 where column1=x) 那么即使在 (select *从 t2 where column1=x) during inner join with t1?

如果我的查询是 (select * from t2 where column1=x) 那么显然索引是有帮助的。当我的完整查询是 运行 时会发生什么?它会先 运行 (select * from t2 where column1=x)(此处将使用索引)然后在不使用索引的情况下与 t1 进行 INNER JOIN 吗?

几乎总是 JOIN 两个 table 比 JOINing 更好 "derived" table.

可能效率低:

 FROM t1
 JOIN ( SELECT ... FROM t2 ... ) AS t3 ON ...

可能更好:

 FROM t1
 JOIN t2 ON ...

一个可能的例外是派生的 table (t3) 比它来自的 table (t2) 小得多。当 GROUP BYDISTINCT、and/or LIMIT 里面有 t3.

时,可能会发生这种情况

如果您想进一步讨论,请提供两个 table 的 SELECTSHOW CREATE TABLE 的完整拼写。一个重要的讨论点是存在(或缺失)哪些索引。