如果我有三张表,说A,B和C
A加入B和 B加入C
那么是否需要将A加入C?
我尝试将A和C连接起来,因此我的查询性能有所提高,但我不明白我的查询性能有何提高?
如果你能解释一下为什么A到C联接会提高性能会非常有用吗?
有3个表。
AWARD_MEMBER
,HOUSEHOLD_MEMBER
和CONDITIONALITY_GROUP
这就是我加入他们的方式,
AWARD_MEMBER.HH_MEMBER_ID = HOUSEHOLD_MEMBER.HH_MEMBER_ID AND
HOUSEHOLD_MEMBER.HH_MEMBER_ID = CONDITIONALITY_GROUP.HH_MEMBER_ID AND
AWARD_MEMBER.HH_MEMBER_ID = CONDITIONALITY_GROUP.HH_MEMBER_ID
说AWARD_MEMBER as A,
HOUSEHOLD_MEMBER as B
和CONDITIONALITY_GROUP as C
所以在查询中真的需要AWARD_MEMBER.HH_MEMBER_ID = CONDITIONALITY_GROUP.HH_MEMBER_ID
加入吗?如果是,那么它是如何工作的?
谢谢, 桑迪普
答案 0 :(得分:0)
由于你没有提到表结构我不能说它为什么会发生(在加入A到C时提高性能)。
但如果您正在寻找性能优化,则应该查看EXPALIN
关键字。
EXPLAIN
是您理解和优化麻烦的MySQL查询的最强大工具之一
EXPLAIN输出的
type
列描述了表的连接方式。以下列表描述了从最佳排序的连接类型 输入最差
- 系统
- 常量
- eq_ref
- REF
- 全文
- ref_or_null
- index_merge
- unique_subquery
- index_subquery
- 范围
- 索引
- 所有的
"
rows
"EXPLAIN
输出中的列是数字的估计值 需要检查的行数。查询是否真的需要检查中的每一行 该表实际上取决于访问计划(显示在其他列中) EXPLAIN输出。例如,索引范围扫描操作不会 必须查看每一行,只查看特定索引范围内的行。 但是完整扫描操作将查看表中的每一行。
通过查看
rows
和type
,您可以轻松了解其原因 你加入时改进了(A到C)。
注意:EXPLAIN EXTENDED
- 显示有关执行查询的方式的其他信息。
希望这会有所帮助..