【发布时间】:2018-08-08 05:18:56
【问题描述】:
我有一个包含超过 2000 万行 SQL 的表。数据从该表中的多个位置存储。我必须对日期进行查询。我不能使用任何过滤器,因为我必须明智地展示数据位置。从单个表运行数据需要 30 多分钟。我该如何管理它? 我也尝试过索引,但没有任何区别
-- declare @DateTo as DateTime ='2018-08-01';
select distinct
[Location Code]
,[Bin Code]
,[Item No_]
,[Quantity]
,[Qty_ (Base)]
,[Zone Code]
,[Bin Type Code]
,[Lot No_]
,[Registering Date]
from
[Warehouse Entry]
where
[Registering Date] <= @DateTo;
【问题讨论】:
-
这是完整的查询吗?你在
WHERE子句中有一个ILE,而我在FROM中根本看不到它 -
最好在dba.stackexchange.com 上问这个问题而不是在这里。
-
您可以通过
[Registering Date]字段对您的表进行分区,尽管在获得数据之前这样做更容易,甚至可以通过该字段创建索引以加快您的查询速度。除此之外,你不能做太多来改进这个简单的查询。这一点,省略了@Squirrel 所说的完全正确的说法,即您使用的 ILE 别名在您的查询中的任何地方都不存在 -
您在
ILE.[Registering Date]上有索引吗,因为这是您唯一的一个过滤器?此查询返回多少行? -
@Squirrel 我编辑了它。
标签: sql sql-server sql-server-2008