【发布时间】:2017-09-14 18:47:15
【问题描述】:
假设我有小表(t1)和大表(t2)。我已经索引了 t2 的 column1 和 column2。如果我想 INNER JOIN t1 and (select * from t2 where column1=x) 那么即使在内部连接期间 (select * from t2 where column1=x) 之后,t2 上的索引也会有帮助与 t1?
如果我的查询是 (select * from t2 where column1=x) 那么显然索引是有帮助的。当我的完整查询运行时会发生什么?它会先运行(select * from t2 where column1=x)(这里将使用索引)然后在不使用索引的情况下与 t1 进行 INNER JOIN?
【问题讨论】:
-
你有没有用
EXPLAIN SELECT ...查看索引是否被使用?但是,理论上,是的,如果索引位于您用作过滤器的列上,则应该使用它。 -
索引通常很有帮助。这就是为什么 MySQL 团队花费了数千年的开发时间使其运行良好的原因。请阅读这个。 meta.stackoverflow.com/a/271056 请密切关注查询性能部分。请edit您的问题提供更多详细信息。请及时这样做,以免您的问题“不清楚”。谢谢。
标签: mysql indexing inner-join query-performance