Clustered Index Scan就是table scan,
把你的表定义和查询语句贴出来看一下

解决方案 »

  1.   

    CLUSTERED创建一个对象,其中行的物理排序与索引排序相同,并且聚集索引的最低一级(叶级)包含实际的数据行。一个表或视图只允许同时有一个聚集索引。具有聚集索引的视图称为索引视图。必须先为视图创建唯一聚集索引,然后才能为该视图定义其它索引。在创建任何非聚集索引之前创建聚集索引。创建聚集索引时重建表上现有的非聚集索引。如果没有指定 CLUSTERED,则创建非聚集索引。说明  因为按照定义,聚集索引的叶级与其数据页相同,所以创建聚集索引时使用 ON filegroup 子句实际上会将表从创建该表时所用的文件移到新的文件组中。在特定的文件组上创建表或索引之前,应确认哪些文件组可用并且有足够的空间供索引使用。文件组的大小必须至少是整个表所需空间的 1.2 倍,这一点很重要。
    NONCLUSTERED创建一个指定表的逻辑排序的对象。对于非聚集索引,行的物理排序独立于索引排序。非聚集索引的叶级包含索引行。每个索引行均包含非聚集键值和一个或多个行定位器(指向包含该值的行)。如果表没有聚集索引,行定位器就是行的磁盘地址。如果表有聚集索引,行定位器就是该行的聚集索引键。每个表最多可以有 249 个非聚集索引(无论这些非聚集索引的创建方式如何:是使用 PRIMARY KEY 和 UNIQUE 约束隐式创建,还是使用 CREATE INDEX 显式创建)。每个索引均可以提供对数据的不同排序次序的访问。对于索引视图,只能为已经定义了聚集索引的视图创建非聚集索引。因此,索引视图中非聚集索引的行定位器一定是行的聚集键。
      

  2.   

    Index Scan
    Index Scan 逻辑运算符和物理运算符从 Argument 列内指定的非聚集索引中检索所有行。如果一个可选的 WHERE:() 谓词出现在 Argument 列内,则只返回满足该谓词的行。如果 Argument 列必须包含 ORDERED 子句,则表示查询处理器已决定按非聚集索引排序行的次序返回行。如果 ORDERED 子句没有出现,存储引擎将以最佳方式(不保证对输出排序)搜索索引。
      

  3.   

    Index Seek
    Index Seek 逻辑运算符和物理运算符利用索引的查找能力从非聚集索引中检索行。Argument 列包含所使用的非聚集索引名称。它还包含 SEEK:() 谓词谓词的行。存储引擎使用索引只处理那些满足 SEEK:() 谓词的行。或者,还可以包含 WHERE:() 谓词,存储引擎将为满足 SEEK:() 谓词的行对其进行取值(而不是使用索引进行此项操作)。如果 Argument 列包含 ORDERED 子句,则表示查询处理器已决定必须按非聚集索引排序行的顺序返回行。如果 ORDERED 子句没有出现,存储引擎将以最佳方式(不保证对输出排序)搜索索引。若允许输出保持顺序,则效率可能比生成非排序输出的效率低。
      

  4.   

    当然Clustered Index Seek速度快,楼上贴的SQL server 在线帮助说的横清楚。Clustered  Index Scan是表上有聚集索引替代table scan。
    用Clustered Index Seek的条件其实和Index Seek是差不多的,比如where中的字段都在索引中,并且返回的纪录不多,表中的纪录不太少,否则用表扫描效率更高。索引的问题比较复杂,不如搂主加点分请大力等高手讲一下