请问如何创建索引来加快查询速度
表中包括      型号   批号   级别   这三个字段,表中记录如下, 
 0530      A      良 
 0530      A      次 
 0648      B      良 
 0648      B      次 
 0530      C      良 
 0648      A      次   
 本人想得到的是如何结果 
 0530      A      良 
 0530      A      次 
 0530      C      良 
 0648      A      次 
 0648      B      良 
 0648      B      次 
 请问能否创建索引来加快查询速度,以及怎样创建?
------解决方案--------------------  select * 
 from    
     ( 
         select  '良 ' as A  
         union all  
         select  '次 ' as A 
     ) t 
 order by a     
 /*   
 次 
 良   
 */   
 因为次、良升序排序是次在前,而良在后。   
 如果这三个字段是逻辑关键字,可以创建聚集索引:   
 型号   升序 
 批号   升序 
 级别   降序
------解决方案--------------------if object_id( 'tbTest ') is not null 
 drop table tbTest 
 GO 
 ----创建测试数据 
 create table tbTest(型号 varchar(10),批号 varchar(10), 级别 varchar(10)) 
 insert tbTest 
 select  '0530 ',   'A ',   '良 ' union all 
 select  '0530 ',   'A ',   '次 ' union all 
 select  '0648 ',   'B ',   '良 ' union all 
 select  '0648 ',   'B ',   '次 ' union all 
 select  '0530 ',   'C ',   '良 ' union all 
 select  '0648 ',   'A ',   '次 ' 
 ----为型号列创建聚集索引 
 create CLUSTERED index idx_tbTest_型号 on tbTest(型号) 
 GO   
 ----查询 
 select * from tbTest order by 型号,批号   
 ----清除测试环境 
 drop table tbTest   
 /*结果 
 型号       批号       级别          
 ---------- ---------- ----------  
 0530       A          良 
 0530       A          次 
 0530       C          良 
 0648       A          次 
 0648       B          良 
 0648       B          次 
 */   
------解决方案----------------------楼上这种处理方式有问题,如果追加顺序不同,可能查询结果就不对了。   
 --如:   
 if object_id( 'tbTest ') is not null 
 drop table tbTest 
 GO 
 ----创建测试数据 
 create table tbTest(型号 varchar(10),批号 varchar(10), 级别 varchar(10)) 
 insert tbTest 
 select  '0530 ',   'A ',   '良 ' union all 
 select  '0530 ',   'A ',   '次 ' union all 
 select  '0648 ',   'B ',   '次 ' union all 
 select  '0648 ',   'B ',   '良 ' union all 
 select  '0530 ',   'C ',   '良 ' union all 
 select  '0648 ',   'A ',   '次 ' 
 ----为型号列创建聚集索引 
 create CLUSTERED index idx_tbTest_型号 on tbTest(型号) 
 GO   
 ----查询 
 select * from tbTest order by 型号,批号 
 ----清除测试环境 
 drop table tbTest   
 /*结果 
 型号       批号       级别          
 ---------- ---------- ----------  
 0530       A          良 
 0530       A          次 
 0530       C          良 
 0648       A          次 
 0648       B          良 
 0648       B          次 
 */ 
------解决方案--------------------建立一个普通索引, 包含这三个列就好了, 注意列的升降序要和需求的结果一致     
 这建议建立为聚集的, 原因很简单: 
 聚集的会影响所有的普通索引(普通索引指向数据的指针)和数据存储顺序, 用三个列来做, 开销比较大 
 而建立一个普通索引的话, 因为普通索引已经包含了楼主查询所需要的所有数据, 所以形成了覆盖索引, 查询覆盖索引不会扫描原始表中的数据, 直接从索引就得到数据结果了   
 所以楼主的这个需求用普通索引是最合适的