小编Ati*_*ieh的帖子

优化超过 25 万行的查询

我正在使用 MS SQL,我必须根据不同的条件在同一个表上运行多个查询。起初我在原始表上运行每个查询,尽管它们都共享一些过滤器(即日期、状态)。这花了很多时间(大约 2 分钟)。

数据行中有重复项,所有索引都是非聚集的。我只对我的标准的 4 列感兴趣,结果应该只输出所有查询的计数。

需要的列:TABLE, FIELD, AFTER, DATE, 并且每个DATE和上都有一个索引TABLE

在创建一个只有我需要的字段的临时表后,它下降到 1:40 分钟,这仍然很糟糕。

CREATE TABLE #TEMP
(
    TABLE VARCHAR(30) NULL,
    FIELD VARCHAR(30) NULL,
    AFTER VARCHAR(1000) NULL,
    DATE DATETIME,
    SORT_ID INT IDENTITY(1,1)
)
CREATE CLUSTERED INDEX IX_ADT ON #TEMP(SORT_ID)

INSERT INTO #TEMP (TABLE, FIELD, AFTER, DATE)
    SELECT TABLE, FIELD, AFTER, DATE 
    FROM mytbl WITH (NOLOCK)
    WHERE TABLE = 'OTB' AND
    FIELD = 'STATUS'
Run Code Online (Sandbox Code Playgroud)

运行此 ->(216598 行受影响)

由于并非所有查询都依赖于日期范围,因此我没有将其包含在查询中。问题是只插入. …

performance sql-server sql-server-2012 performance-tuning

11
推荐指数
2
解决办法
8万
查看次数