首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Serv:为什么我的查询运行这么慢?

Serv:为什么我的查询运行这么慢?
EN

Stack Overflow用户
提问于 2017-01-20 22:48:27
回答 2查看 96关注 0票数 1

自学成才,小企业DIYer在这里。运行'14。

我现在每个月运行这个查询4次,已经将近两年了。然而,在过去的两个月中,查询运行时变得非常长。什么东西在2-3分钟内运行现在需要24+小时.

我将每周文件导入到一个月表中,然后将该表与前两个月表进行对比,以获得一个唯一的导出文件。表的容量与数据类型、索引和允许的空值保持一致。

这不是计算能力。我可以用去年一月的文件代替这个一月份的文件,查询在几分钟内运行。同样,这是从2016年12月的档案开始的。以前的任何文件都运行得非常快。

有什么想法吗?提前感谢!

查询:

代码语言:javascript
复制
SELECT [2017_JAN].*
 FROM [dbo].[2017_JAN]
  LEFT JOIN [dbo].[2016_NOV]
   ON [2016_NOV].[ID] = [2017_JAN].[ID]
  LEFT JOIN [dbo].[2016_DEC]
   ON [2016_DEC].[ID] = [2017_JAN].[ID]
WHERE   [2016_NOV].[ID]  IS NULL
    and [2016_DEC].[ID]  IS NULL
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-20 23:19:28

如前所述,在所涉及的表上重建索引解决了这个问题。在这种情况下,您可以运行以确保表的健康。

票数 1
EN

Stack Overflow用户

发布于 2019-07-08 15:18:36

如果执行select *,索引将无法工作。如果您只选择所需的实际列,它将避免表扫描并运行得更快。

另一个提示是,如果您有足够的内存,可以在联接中添加一个散列查询提示:https://learn.microsoft.com/en-us/sql/relational-databases/performance/joins?view=sql-server-2017

代码语言:javascript
复制
SELECT [2017_JAN].*
 FROM [dbo].[2017_JAN]
  LEFT HASH JOIN [dbo].[2016_NOV]
   ON [2016_NOV].[ID] = [2017_JAN].[ID]
  LEFT HASH JOIN [dbo].[2016_DEC]
   ON [2016_DEC].[ID] = [2017_JAN].[ID]
WHERE   [2016_NOV].[ID]  IS NULL
    and [2016_DEC].[ID]  IS NULL

总之,我们必须查看您的表、键和索引,以优化所有这些。

祝好运!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41773608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档