sql – 提高非聚集索引查找的性能
发布时间:2020-05-25 12:43:50 所属栏目:MsSql 来源:互联网
导读:我有一个查询,其中索引搜索(非聚集)占用总执行时间的93%的更多时间. 查询的执行计划,索引查找的估计行数是1,实际行数是209.这是否是问题? 如何提高非聚簇索引的性能.一般性答案将有所帮助. 执行计划: 以下是查询, SELECT TOP 11 DVPR1.IncidentID, DVPR2.I
|
我有一个查询,其中索引搜索(非聚集)占用总执行时间的93%的更多时间. 查询的执行计划,索引查找的估计行数是1,实际行数是209.这是否是问题? 如何提高非聚簇索引的性能.一般性答案将有所帮助. 执行计划: 以下是查询, SELECT TOP 11 DVPR1.IncidentID,DVPR2.IncidentID,Rel.ID,PER1.[LastName],PER1.[FirstName]
FROM
DV_PHPersonalRecord DVPR1
INNER JOIN Relationship Rel
ON Rel.source_Id = DVPR1.RowId
AND Rel.typeCode = 'RPLC'
INNER JOIN DV_PHPersonalRecord DVPR2
ON DVPR2.RowId = Rel.target_Id
INNER JOIN [T_Attribute] (nolock)
ON [T_Attribute].[ActRelationship_ID] = Rel.[ID]
AND [T_Attribute].[name] = 'MergeFlag'
AND ( [T_Attribute].[valueString_Code] = 'pending')
INNER JOIN [Person] PER1 (nolock)
ON DVPR1.[PersonDR]=PER1.[RowID]
INNER JOIN [Person] PER2 (nolock)
ON DVPR2.[PersonDR]=PER2.[RowID]
WHERE
DVPR1.TypeDR = 718990
AND
(PER1.[Code_ID] IS NULL OR ( PER1.[Code_ID] = '6516'
AND PER1.[OptionsCode_ID] = '6522')
)
AND
( PER2.[Code_ID] IS NULL OR ( PER2.[Code_ID] = '6516'
AND PER2.[OptionsCode_ID] = '6522')
)
ORDER BY PER1.[LastName] ASC,PER1.[FirstName] ASC
解决方法当我看到预期行和实际行之间存在这种差异时,我首先会看到更新所有相关表的统计信息.查询优化器应该自动执行此操作,但……有时它会带来好处. 这通常需要DBA类型权限. 查看有关更新统计信息的Microsoft页面. http://msdn.microsoft.com/en-us/library/ms187348.aspx (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql-server – 如何通过数据库获取特定实例的CPU使用率?
- 在同一个表中使用不同条件的一个SQL查询中的多个聚合函数
- sql – 如何使用现有表加入查询结果集?
- sql-server – 表定义中列的顺序是否重要?
- sql-server – 请求的操作需要OLE DB会话对象… – 通过ADO
- SQL Server 2005 HashBytes 加密函数
- sql-server – 如何最好地衡量查询性能?
- sql-server – 将参数传递给TADOStoredProc(Delphi)的更好方
- 数据库设计 – 大型Web应用程序的数据库架构[已关闭]
- sql – 将表中的blob导出到单个文件的最快方法
