SQL之索引

来源:互联网 发布:淘宝众筹服务商 编辑:程序博客网 时间:2024/05/16 18:51
/*索引*/
  
  
  --索引是对数据库表中一个或多个列的值进行排序的结构
  --索引提供指针以指向存储在表中指定列的数据值,然后根据指定的排序次序排列这些指针
  
  /*查询指定的数据库有多少张表*/
  select object_id('employee')
  --获得指定database对象的ID,如果该对象不存在,返回NULL
  
  select name from syscolumns where id=object_id('employee')
  --返回指定表的字段
  
  select name from sysobjects where xtype='U'
  --返回指定数据库的用户表
  --xtype表类型,U表示用户表
  
  /*索引分类*/
  --表中各行的物理顺序与键值的逻辑(索引)顺序相同称为聚集索引 。表只能包含一个聚集索引
  --非聚集索引指定表的逻辑顺序。
  
  select * from sysindexes where name='lecky'
  --sysindexes 查询指定表的索引
  --0表示无索引
  --name为索引名
  
  /**主键不允许添加在允许为空的字段**/
  
  --创建表的时候,如果指定了主键,那么SQL自动在主键列上面创建聚集索引,
  --索引的名称和主键约束的名称相同
  
  /*sysindexes*/
  --数据库中的每个索引和表在表中各占一行
  --该表存储在每个数据库中
  --表 indid字段表示索引 ID
   --1 = 聚集索引
   -->1 = 非聚集
   --255 = 具有 text 或 image 数据的表条目
  
  /*创建索引的指导原则*/
  --适合创建索引情况:
  ----该列频繁用于进行搜索。
  ----该列用于对数据进行排序。
  --不适合创建索引情况:
  ----列中仅包含几个不同的值。
  ----表中仅包含几行。
  
  /*创建索引*/
  CREATE [UNIQUE] [CLUSTERED|NONCLUSTERED]
   INDEX index_name
   ON table_name(column_name[, column_name]…)
  --在允许为空的列上创建聚合索引
  --可录入相同数据,说明聚集索引不一定唯一,二者没有直接关系
  --默认创建非聚集,不唯一的索引
  
  /*查询索引*/
  select * from sysindexes where name='index_name'
  
  /*非聚集索引*/
  --非聚集索引指定表的逻辑顺序。数据存储在一个位置,索引存储在另一个位置,索引中包含指向 数据存储位置的指针。
  --一个表可以有多个(最多249个)非聚集索引
 
原创粉丝点击