关于union的查询结果的表现

时间:2012-06-06 06:28:03

标签: sql performance optimization query-optimization union

我有两个存储用户数据的表,一个用于内部用户,另一个用于外部用户。两个用户都会买一本书,所以我有以下的sql脚本

select o.orderid, o.orderdate, u.firstname, u.lastname from OrderTable o inner join 
(
  select inneruser_id as uid, firstname, lastname from innerUser where len(firstname) > 0 or len(lastname) > 0
  union
  select external_id as uid, firstname, lastname from externalUser where len(firstname) > 0 or len(lastname) > 0
) u on u.uid = o.userId where o.orderdate > {0}

对于table innerUser,innneruser_id是主键,但是external_id不是externalUser表的主键,我想知道,如果union的结果仍然在u.uid上有索引,因为有超过200,000个内部用户和关于100,000名外部用户。

我是否需要向external_id添加索引,这会提高查询的性能。 我感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

可能,但看起来向u.uid添加索引,o.userIdo.orderdate更有可能提高效果,因为这些参与了加入和过滤。

答案 1 :(得分:0)

在管理工作室中运行您的查询,并启用“包括实际执行计划”选项。

并做其建议以改善表现。