SQL之索引

 

 /*索引*/



-- 索引是对数据库表中一个或多个列的值进行排序的结构
 -- 索引提供指针以指向存储在表中指定列的数据值,然后根据指定的排序次序排列这些指针 


/*查询指定的数据库有多少张表*/

       
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个)非聚集索引 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值