Sql union查询结果的性能分析

Sql union查询结果的性能分析,sql,performance,optimization,query-optimization,union,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(lastnam

我有两个存储用户数据的表,一个用于内部用户,另一个用于外部用户。两个用户都会买一本书,所以我有下面的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}
对于表innerUser,innerUser_id是主键,但externalUser表的主键不是externalUser,我想知道,union的结果是否仍然在u.uid上有索引,因为有超过200000个内部用户和大约100000个外部用户

我是否需要向外部id添加索引,这将提高查询的性能。
我非常感谢您的帮助。

可能会,但它看起来像是在
u.uid
o.userId
o.orderdate
中添加了索引,因为这些都涉及到连接和筛选。在打开“包含实际执行计划”选项的情况下,在management studio中运行您的查询


然后按照它的建议来提高性能。

这非常有用,我只是使用了推荐的“缺失索引”来大大提高查询性能。谢谢