【问题标题】:SQL takes more time to fetch recordsSQL 需要更多时间来获取记录
【发布时间】: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


【解决方案1】:

你所能做的就是通过使用来限制你的结果

Top(100) 结果或 Where 子句你想要的数据,而不是

SELECT * FROM table

这将帮助您在更短的时间内仅获得相关且有限的数据。 您可以做的另一件事是仅获取有关列,这将为您提供所需的结果。 这将显着延长提取时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    • 2012-10-30
    • 2014-09-21
    • 1970-01-01
    • 2019-11-08
    • 2015-04-03
    • 1970-01-01
    相关资源
    最近更新 更多