SQL之索引

本文详细介绍了数据库索引的概念、分类及创建原则,并提供了查询表、字段及索引的具体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、付费专栏及课程。

余额充值