一般来说,在经常要查询的字段上建立索引●聚集索引结构
在SQL Server中,索引是按B+树结构来进行组织的。聚集索引的数据排列顺序与数据的物理排列顺序相同。
●聚集索引和非聚集索引的根本区别是表记录的排列顺序和与索引的排列顺序是否一致.
  聚集索引表记录的排列顺序与索引的排列顺序一致,优点是查询速度快,
  因为一旦具有第一个索引值的纪录被找到,具有连续索引值的记录也一定物理的紧跟其后。
  聚集索引的缺点是对表进行修改速度较慢,这是为了保持表中的记录的物理顺序与索引的顺序一致,  
  而把记录插入到数据页的相应位置,必须在数据页中进行数据重排,降低了执行速度。
  建议使用聚集索引的场合为:
      ①此列包含有限数目的不同值;  
    ②查询的结果返回一个区间的值;  
    ③查询的结果返回某值相同的大量结果集。  
●非聚集索引指定了表中记录的逻辑顺序,但记录的物理顺序和索引的顺序不一致,
  聚集索引和非聚集索引都采用了B+树的结构,但非聚集索引的叶子层并不与实际的数据页相重叠,
  而采用叶子层包含一个指向表中的记录在数据页中的指针的方式。非聚集索引比聚集索引层次多,
  添加记录不会引起数据顺序的重组.  
  建议使用非聚集索引的场合为:
    ①此列包含了大量数目不同的值;  
    ②查询的结束返回的是少量的结果集;  
    ③WHERE字句用经常使用的列。
    ④经常需要连接或分组的列。  
    ⑤order   by   子句中使用了该列。  

解决方案 »

  1.   

    CREATE  INDEX [IX_Class] ON [dbo].[student] 
    (
    [class] ASC
    )ON [PRIMARY]
    GO
    给班级加索引语法如上,不过如果select distinct的数量比较少的话,是没有必要加索引的,执行速度并不会有显著提高,而且会浪费存储空间。
      

  2.   

    create unique index index_索引名 on 表(字段) --唯一索引
    create clustered index index_索引名 on 表(字段) --聚集索引
    create nonclustered index index_索引名 on 表(字段) --非聚集索引
      

  3.   


    create index 索引名 on 表名(列名)
    create  index  ix_aa  on  xueshengbiao(Class)
      

  4.   

    create clustered index index_1 on Table1
      

  5.   

    创建唯一索引时,确保被索引的列不存在空值,因为sql把空值也当做值,2个空值的话就违背了unique的规则创建唯一索引的前提是:创建的索引的列已有记录本身没有重复。查询表中数据时,如果查询结果行较少,少于总数的25%时,会明显提高效率,如果查询操作返回结果总是含大量数据,那么索引的用处不大数据大量更新最好先销毁索引,后面再建立表和索引最好分开在不同的磁盘,会提高速度。视图除了sql语句中的查询和更新,还要告诉dbms执行定义视图的查询,影响查询效率sql可更新视图限制为基于对单个表的,并且没有having 或者group by的查询,为了让视图可更新,视图不能用聚集函数,计算的列或 select distingct
      

  6.   


      Create unique index index_test on 表名(class)
      

  7.   

    一个完整的SQL SERVER数据库全文索引的示例。(以pubs数据库为例) 首先,介绍利用系统存储过程创建全文索引的具体步骤: 1) 启动数据库的全文处理功能          (sp_fulltext_database) 
    2) 建立全文目录                      (sp_fulltext_catalog) 
    3) 在全文目录中注册需要全文索引的表  (sp_fulltext_table) 
    4) 指出表中需要全文索引的列名        (sp_fulltext_column) 
    5) 为表创建全文索引                  (sp_fulltext_table) 
    6) 填充全文目录                      (sp_fulltext_catalog) 
    ---------********示例********------------- 
    以对pubs数据库的title和notes列建立全文索引,之后使用索引查询title列或notes列中包含有datebase 或computer字符串的图书名称: 在这之前,需要安装Microsoft Search服务,启动SQL server全文搜索服务 
    user pubs --打开数据库 
    go 
    --检查数据库pubs是否支持全文索引,如果不支持 
    --则使用sp_fulltext_database 打开该功能 
    if(select databaseproperty('pubs','isfulltextenabled'))=0  
      execute sp_fulltext_database 'enable' --建立全文目录FT_PUBS 
    execute sp_fulltext_catalog 'FT_pubs','create' --为title表建立全文索引数据元 
    execute sp_fulltext_table 'title','create','FT_pubs','UPKCL_titleidind' --设置全文索引列名 
    execute sp_fulltext_column 'title','title','add' 
    execute sp_fulltext_column 'title','notes','add' --建立全文索引 
    --activate,是激活表的全文检索能力,也就是在全文目录中注册该表 
    execute sp_fulltext_table 'title','activate' --填充全文索引目录 
    execute sp_fulltext_catalog 'FT_pubs','start_full' 
    go --检查全文目录填充情况 
    While fulltextcatalogproperty('FT_pubs','populateStatus') <> 0 
    begin --如果全文目录正处于填充状态,则等待30秒后再检测一次 
    waitfor delay '0:0:30' 
    end --全文目录填充完成后,即可使用全文目录检索 select title 
    form 
    where CONTAINS(title,'database') 
    or CONTAINS(title,'computer') 
    or CONTAINS(notes,'database') 
    or CONTAINS(notes,'database') 
    '--------------以下介绍一下全文操作类的系统存储过程 
    过程名称:sp_fulltext_service 
    执行权限:serveradmin或系统管理员 
    作    用:设置全文搜索属性 
    过程名称:sp_fulltext_catalog 
    执行权限:db_owner及更高角色成员 
    作    用:创建和删除一个全文目录,启动或停止一个全文目录的索引操作 
    过程名称:sp_fulltext_database 
    执行权限:db_owner角色成员 
    作    用:初始化全文索引或删除数据库中所有全文目录 
    过程名称:sp_fulltext_table 
    执行权限:db_ddladnmin或db_owner角色成员 
    作    用:将一个表标识为全文索引表或非全文索引表 
    过程名称:sp_fulltext_column  
    执行权限:db_ddladnmin角色成员 
    作    用:指出一个全文索引表中的那些列假如或退出全文索引