我对前几年的数据运行了以下查询,花了3个小时,今年花了13天.我不知道为什么会这样.任何帮助将非常感激.
我刚刚测试了旧SQL服务器中的查询,它可以在3小时内完成.因此,问题必须与我创建的新SQL服务器有关.你有任何想法可能是什么问题?
查询:
USE [ABCJan]
CREATE INDEX Link_Oct ON ABCJan2014 (Link_ref)
GO
CREATE INDEX Day_Oct ON ABCJan2014 (date_1)
GO
UPDATE ABCJan2014
SET ABCJan2014.link_id = LT.link_id
FROM ABCJan2014 MT
INNER JOIN [Central].[dbo].[LookUp_ABC_20142015] LT
ON MT.Link_ref = LT.Link_ref
UPDATE ABCJan2014
SET SumAvJT = ABCJan2014.av_jt * ABCJan2014.n
UPDATE ABCJan2014
SET ABCJan2014.DayType = LT2.DayType
FROM ABCJan2014 MT
INNER JOIN [Central].[dbo].[ABC_20142015_days] LT2
ON MT.date_1 = LT2.date1
Run Code Online (Sandbox Code Playgroud)
使用以下数据结构:
ABCJan2014(7000万行 - 没有独特的标识符 - Link_ref和date_1在一起是唯一的)
Link_ID nvarchar (17)
Link_ref int
Date_1 smalldatetime
N int
Av_jt int
SumAvJT decimal(38,14)
DayType nvarchar (50)
Run Code Online (Sandbox Code Playgroud)
LookUp_ABC_20142015
Link_ID nvarchar (17) PRIMARY KEY
Link_ref int INDEXED
Link_metres int
Run Code Online (Sandbox Code Playgroud)
ABC_20142015_days
Date1 smalldatetime PRIMARY KEY & INDEXED
DayType nvarchar(50)
Run Code Online (Sandbox Code Playgroud)
看起来这部分问题花了这么长时间.
再次感谢您的帮助,我正在拔头发.
如果你查看执行计划,时间是在实际更新中
查看日志文件
日志文件是否位于快速磁盘上?
日志文件是否位于同一物理磁盘上?
日志文件是否需要增长?
将日志文件大小设置为数据文件大小的 1/2
至于索引测试和调整,
如果连接列已建立索引,这里不需要做太多事情
select count(*)
FROM ABCJan2014 MT
INNER JOIN [Central].[dbo].[LookUp_ABC_20142015] LT
ON MT.Link_ref = LT.Link_ref
select count(*)
FROM ABCJan2014 MT
INNER JOIN [Central].[dbo].[ABC_20142015_days] LT2
ON MT.date_1 = LT2.date1
Run Code Online (Sandbox Code Playgroud)
从顶部(1000)开始以获得更新调整工作
对于笑声,请尝试一下
请发布此查询计划
(不要向 ABCJan2014 link_id 添加索引)
UPDATE top (1000) ABCJan2014
SET MT.link_id = LT.link_id
FROM ABCJan2014 MT
JOIN [Central].[dbo].[LookUp_ABC_20142015] LT
ON MT.Link_ref = LT.Link_ref
AND MT.link_id <> LT.link_id
Run Code Online (Sandbox Code Playgroud)
如果 LookUp_ABC_20142015 未激活,则添加 nolock
JOIN [Central].[dbo].[LookUp_ABC_20142015] LT with (nolock)
Run Code Online (Sandbox Code Playgroud)
nvarchar (17) 对于 PK 对我来说很奇怪
为什么 n - 你真的有一些 unicode 吗?
为什么不直接使用 char(17) 并让它分配空间呢?
| 归档时间: |
|
| 查看次数: |
14201 次 |
| 最近记录: |