【问题标题】:SQL Server 2012 Database SlownessSQL Server 2012 数据库运行缓慢
【发布时间】:2018-09-08 15:20:20
【问题描述】:

所以我们有一个系统,它使用两列作为唯一 ID,用户 ID 和日期。我们必须保留曾经与特定主题相关联的每条记录,这样就不会有被删除的记录。所以一个主题可以有50条记录。数据库设计者创建视图以获取主题的最新行。就记录数而言,数据库实际上并没有那么大,我们大约有 750000 条记录。

为每个表编写的视图非常类似于:

Select Username, 
UserID 
From users 
where USerID = 000 
and UserUpdatedDate = (
    Select MAX(UserUpdatedDate) 
    FROM 
    users a 
    WHERE a.USerID = UserID 
)

我们发现速度很慢,欢迎提出任何建议?

我们正在使用临时表重写一些查询,它似乎更快。从长远来看,这是好事还是坏事

【问题讨论】:

  • 临时表的使用还不错,除非它需要存在的原因是代码错误。子选择不是最好的.. 在这里尝试stackoverflow.com/questions/19432913/… 代码中使用的任何循环也可能会受到伤害。否则,请查看您的系统资源(创建跟踪)并找到该瓶颈。
  • 对于查询性能调优,您首先需要知道瓶颈是什么。这意味着您需要查看执行计划并了解花费了这么长时间。

标签: sql sql-server-2012 subquery


【解决方案1】:

替换这个子查询 (Select MAX(UserUpdatedDate) FROM users a WHERE a.USerID = UserID ) 带有连接 - 子查询很慢

【讨论】:

  • 见上面第十二条第一条评论 - 使用临时表然后加入
猜你喜欢
  • 1970-01-01
  • 2017-09-24
  • 2011-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-11
  • 1970-01-01
相关资源
最近更新 更多