【发布时间】: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