【发布时间】:2018-07-22 12:53:30
【问题描述】:
我使用的是 sql server 2012。我有一张表,包含 170 万条记录。我只是使用 (select * from table_name) 选择所有记录。但取回需要 1 小时 2 分钟。
我应该怎么做才能快速获取记录?
【问题讨论】:
-
现在
Select * From被认为是通往 P45 的门户,永远不要在大桌子上使用它。您是否等了 20 分钟才检查,并在 20 分钟后检查了数据库log file的大小? -
除了上面的注释,你还有多少条记录,这张表有多大?对于数百万条记录,您可以预计查询需要几分钟时间。
-
“包含记录”?如果从
SELECT *返回数据需要 20 分钟,如果您的表不包含任何 行,我会感到惊讶。 @BHouse 在这里有正确的观点,SELECT *在大桌子上会很慢。如果您想要“快速”查询,请限制您在SELECT中返回的列,或使用WHERE限制行。 -
@BrankoDimitrijevic,可能是lakhs,这里有 100,000 个单位或 170 万行。
-
为什么你认为
SELECT *会有所帮助...?它不是。时期。如果您尝试调试查询,请询问该查询。如果您的问题是“我如何让SELECT * FROM [Table];运行得更快?”答案很简单:你没有;或显着增加服务器的资源。这应该更像您的查询是“我有一个查询(我没有提供),但是它的性能很差。因此我想检查原因并做了一个SELECT *...。这也表现不佳。我该怎么做让SELECT *...变得更好?”问题不在于您的SELECT *...,而是您的初始查询。
标签: sql performance sql-server-2012