Sql server 需要帮助使用数据函数优化SQL select查询吗

Sql server 需要帮助使用数据函数优化SQL select查询吗,sql-server,Sql Server,我实现了一个SQL查询,如下所述 SELECT OLT.status, OLT.queuedate, ( CONVERT(VARCHAR(10), OLT.queuedate, 101) + ' ' + Stuff(RIGHT(CONVERT(VARCHAR(30), OLT.queuedate, 109), 14), 9, 4, ' ') ) FROM onlineresults OLT WITH(nolock)

我实现了一个SQL查询,如下所述

SELECT OLT.status,
       OLT.queuedate,
       ( CONVERT(VARCHAR(10), OLT.queuedate, 101)
         + ' '
         + Stuff(RIGHT(CONVERT(VARCHAR(30), OLT.queuedate, 109), 14), 9, 4, ' ')
       )
FROM   onlineresults OLT WITH(nolock)
       LEFT JOIN roadmap CR WITH(nolock)
              ON OLT.roadmapid = CR.content_roadmap_id  
OnlineResults只有143000条记录,但完成上述查询需要将近5分钟

我们是否有其他方法通过创建索引来加快查询速度

Onlineresults表的架构

OnlineID (Primary Key)
RoadmapId
StudentId
SectionId
Status
Retries
QueueDate

路线图表中有许多字段,内容_roadmap _id是主键

是索引将影响结果

你可以这样做 1.检查两列是否有主键或索引,如果没有,则在其上创建。始终使用pk值筛选数据。当您的查询占用太多数据时,还应尽可能多地过滤数据

  • queuedate列中,给出带有强制转换结果的索引,该索引可以提供更快的结果。或者创建一个值为的新列(CONVERT(VARCHAR(10),OLT.QueueDate,101)
  • 将计算列添加到表中,并在此列上创建索引

    ALTER TABLE MyTable
    Add Column queuedateCalculated As (CONVERT(VARCHAR(10), OLT.QueueDate , 101)
    
    Then create an index on this.
    
    CREATE INDEX queuedateCalculatedIdx ON MyTable.queuedateCalculated
    
    参考链接

    请检查这两种情况的执行计划。这里有一篇很好的文章,可以理解带有索引的计划

    也可以创建索引视图


    Bhuvan,您可以使用EXPLAIN分析并粘贴结果。还请包括表格定义(如果可能,或至少包括相关字段)@Vlad,我通过添加表的架构更新了我的问题。.解释分析是什么意思?它是SQL Server中的查询执行计划吗?在SQL Server中,您可以使用数据库引擎优化顾问来识别缺少的索引。您为什么要使用
    路线图
    ?adrianm,因为我需要显示路线图ta中的路线图日期B我们是否可以创建索引视图?来解决此问题