Sql 有没有比联合所有人都快的方法

Sql 有没有比联合所有人都快的方法,sql,sql-server,Sql,Sql Server,在SQL中,我使用UNION ALL从不同的表中获取一些数据,但是获取结果需要很长时间。有没有一种更快的方法来实现这一点,而无需使用UNION 例如,查询如下所示: select * from table_1 where date between '20141001' and '20141020' UNION ALL select * from table_2 where date between '20141001' and '20141020'; 仅就以下几点评论: 考虑在

在SQL中,我使用
UNION ALL
从不同的表中获取一些数据,但是获取结果需要很长时间。有没有一种更快的方法来实现这一点,而无需使用
UNION

例如,查询如下所示:

select * 
from table_1 
where date between '20141001' and '20141020' 
UNION ALL  
select * 
from table_2 
where date between '20141001' and '20141020';

仅就以下几点评论:

  • 考虑在两个表的
    date
    列上添加索引
  • 指定列列表,而不是使用
    *
  • 仔细检查
    date
    列的数据类型:是date还是datetime?如果是datetime,你真的需要成为datetime吗

除非我们看到您的SQL,否则无法判断。。dbms也可以很好地知道问题可能不在UNION中,而是在您UNION的不同查询中。HDD空间比用户时间便宜得多。好吧,如果您使用的是SQL Express edition,那么您可能会运气不佳,但是创建索引几乎是获得任何性能所必需的。否则,“UNIONALL”可能是从两个表中获取数据的最快方法(请使用列列表而不是*)。我同意,索引是最好的方法。如果必须对这两个表进行完整扫描以获得如此简单的查询,则无法合理地期望良好的性能。你的问题与工会无关。去和你的DBA争一争,争取更大的空间限制。我使用*是因为所有的列都需要