【发布时间】:2019-02-22 13:25:49
【问题描述】:
我的表有 200 万条记录。我想在临时表中插入数据并在我的过程中使用该临时表。但是插入需要 30 秒。请建议如何减少时间? 我无法显示实际查询。所以我的查询就是这种格式。
注意:我已经使用过 CTE。
;With Tmp_TableName
as
(
SELECT T1.A, T1.B, T1.C, T1.D, T1.E, T1.F, T1.G , T1.H
FROM TableName T1 WITH(NOLOCK)
WHERE T1.A = 1
AND CONVERT( NVarchar, T1.H, 111) <= CONVERT( NVarchar, getdate(), 111)
)
SELECT *
FROM Tmp_TableName T1 WITH(NOLOCK);
【问题讨论】:
-
是选择部分慢还是插入?你为什么要这样比较日期?
-
选择需要很长时间的部分
-
这是一个完整的查询,还是您在插入/做任何事情之前做了一些其他操作。
-
@BhavikaZimbar,您可以上传您的实际执行计划here 并将链接添加到您的问题。一旦您按照建议重构了
WHERE子句以避免转换,则A、H上的索引以及包含其他列的索引应该会提高性能。
标签: sql sql-server performance query-optimization