【发布时间】:2021-08-02 19:37:59
【问题描述】:
我有一个简单的数据库表,只有 5 列,没有主键,有 70 亿+(7,50,01,771) 数据。是的,你没看错。它有一个簇索引。
数据库表列
集群索引
如果我编写一个简单的选择查询来获取数据,则需要 7-8 分钟才能返回数据。现在,你得到我的下一个问题。我可以应用于此数据库表的技术是什么?以便及时获取数据。
在实际场景中,我使用此表的位置与 2 个具有 WHERE 子句和过滤数据的临时表连接。请在下面找到我的查询以供参考。
SELECT dt.ZipFrom, dt.ZipTo, dt.Total_time, sz.storelocation, sz.AcctShip, sz.Licensee,sz.Entity from #Zips z INNER join DriveTime_ZIPtoZIP dt on zipFrom = z.zip INNER join #storeZips sz on ZipTo = sz.zip order by z.zip desc, total_time asc
谢谢
【问题讨论】:
-
“如果我编写一个简单的选择查询来获取数据” 定义一个“简单”的选择查询。
SELECT SingleColumn FROM YourTable WHERE SomeColumn = 1;?考虑到您没有PK,您是否至少有一些索引?有没有CLUSTERED? -
是的,我的表中有一个聚集索引。检查我更新的问题。
-
您的查询是否有 WHERE 子句?将查询添加到您的问题中。
-
我建议使用列存储索引。并且可能是一个非聚集索引。是时候去谷歌看看微软的文档了。
-
edit 你的问题,@Krunal,不要把这些信息放在 cmets 中。
标签: sql-server query-optimization large-data