1

Im running a query that is taking 2 seconds but it should perform better, so I run the Execute Plan details from SQL Managemenet Studio and I found a "step" in the process that the Cost is 70%.

enter image description here

Then, I right click on the item and I found an option that says "Missing Index Details", after I clicked that then a query with a recommendation is generated:

/*
Missing Index Details from SQLQuery15.sql - (local).application_prod (appprod (58))
The Query Processor estimates that implementing the following index could improve the query cost by 68.8518%.
*/

/*
USE [application_prod]
GO
CREATE NONCLUSTERED INDEX [<Name of Missing Index, sysname,>]
ON [dbo].[cloud_document] ([isactivedocument])
INCLUDE ([objectuid])
GO
*/

So my question is exactly what happens if I execute the query? Is it going to affect my database, is there any sideback or sideeffects after applying that?

Thanks a lot and appreciate in advance.

4

2 回答 2

2

运行查询 qill 在指定的表 (cloud_document) 上创建索引。

这应该会提高读取性能并提高性能/查询时间。

它也会影响 INSERT/UPDATE/DELETE 语句的性能,因为在这些语句期间需要维护索引。

使用索引的决定、多少索引以及索引的组成更多是一门艺术,而不是一门精确的科学。

索引、碎片整理和统计的实际维护是可以自动化的,但应该保留,直到您更好地了解索引是什么以及它们的作用。

我建议您开始阅读一些有关索引的文档。

可以从SQL Server 索引的阶梯开始

于 2013-07-17T04:42:13.667 回答
0

字面意思是告诉您在表 [dbo].[cloud_document] 的 isactivedocument 上建立索引,我假设您使用 isactivedocument 作为过滤表的条件,并选择列 objectuid。就像是

select objectuid, ... from [dbo].[cloud_document] where isactivedocument = 0/1

请注意,“聚集索引扫描 (70%)”并不意味着它是聚集索引的问题。这意味着您在 isactivedocument 上没有索引,然后 sql 引擎必须扫描聚集索引以找到您想要的。这就是它承受如此大压力的原因。在 isactivedocument 上创建索引后,再次查看计划,您会看到节点变为“索引搜索”,这是一种更快地找到所需内容的方法。

通常,如果您的数据库压力主要来自查询,那么新索引不会对您的系统造成太大伤害。继续创建索引。但当然,您需要尽可能少地保持索引数量。

于 2013-07-17T05:26:46.903 回答