SQL查询需要时间才能执行

时间:2019-02-22 13:25:49

标签: sql sql-server performance query-optimization

我的桌子有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);

2 个答案:

答案 0 :(得分:1)

我建议修正您的WHERE子句:

WHERE T1.A = 1 AND
      T1.H < DATEADD(DAY, 1, CAST(GETDATE() as DATE)0

这可以利用TABLE1(A, H)上的索引。

答案 1 :(得分:1)

您可以使用cast()进行过滤:

WHERE T1.A = 1 AND
      T1.H <= CAST(GETDATE() AS DATE) -- This assumes `T1.H` has no time. (i.e. 00:00:00);

如果您的SELECT语句中有任何具有varchar/nvarchar(max)类型的字段,那么它可能会变慢,您可以排除它并进一步检查。

但是,您没有在索引中包含任何表结构,因此很难回答任何人。