SQL 索引

发布时间:2017-09-30编辑:佚名阅读(1834)

索引加快检索表中数据的方法,它对数据表中一个或者多个列的值进行结构排序,是数据库中一个非常有用的对象。

当需要快速找出在某个列中有一特定值的行

例如:有一张person表,其中有2W条记录,记录着2W个人的信息。有一个Phone的字段记录每个人的电话号码,现在想要查询出电话号码为xxxx的人的信息。

如果没有索引,那么将从表中第一条记录一条条往下遍历,直到找到该条信息为;

如果有了索引,那么会将该Phone字段,通过一定的方法进行存储,好让查询该字段上的信息时,能够快速找到对应的数据,而不必在遍历2W条数据了。

使用索引虽然可以提高系统的性能,增强数据检索速度,但它需要占用大量的物理存储空间,建立索引的一般原则如下:

(1)只有表的所有者可以在同一表中创建索引。

(2)每个表中只能创建一个聚集索引。

(3)每个表中最多可以创建249个非聚集索引。

(4)在经常查询的字段上建立索引。

(5)定义text,image,bit数据类型的列上不要建立索引。

(6)在外键上可以建立索引。

(7)在主键列上一定要建立索引。

(8)在那些重复的值比较多,查询较少的列上不要建立索引。

创建索引

--使用CREATE 语句创建索引
CREATE [UNIQUE] [CLUSTERED| NONCLUSTERED] INDEX 索引名 ON 表名(字段名 [ASC|DESC]);
CREATE INDEX 索引名 ON  表名(字段名,字段名) INCLUDE(包含列);
CREATE PRIMARY KEY INDEX 索引名 ON 表名(字段名) ;---主键索引

--使用ALTER TABLE语句创建索引
ALTER TABLE 表名 ADD INDEX 索引名(字段名列表);
ALTER TABLE 表名 ADD UNIQUE(字段名列表);
ALTER TABLE 表名 ADD PRIMARY KEY(字段名列表);

UNIQUE——建立唯一索引。

CLUSTERED——建立聚集索引

NONCLUSTERED——建立非聚集索引

ASC——索引升序排序。

DESC——索引降序排序。

索引中的包含列

可以将非键列(称为包含列)添加到非聚集索引的叶级别,从而通过涵盖查询来提高查询性能。 也就是说,查询中引用的所有列都作为键列或非键列包含在索引中。 这样,查询优化器可以通过索引扫描找到所需的全部信息,而无需访问表或聚集索引数据。 有关详细信息,请参阅 Create Indexes with Included Columns

查看索引

EXEC sp_helpindex 表名
-- 查看某个表的索引
SELECT * FROM sys.sysindexes WHERE id=OBJECT_ID('表名');

修改索引名

EXEC sp_rename '表名.旧索引名' '新索引名'

注:要对索引进行重命名时,需要修改的索引名格式必须为“表名.索引名”

删除索引

DROP INDEX 表名.索引名
DROP INDEX 索引名 ON 表名
ALTER TABLE 表名 DROP INDEX 索引名;
ALTER TABLE 表名 DROP PRIMARY KEY;


    关键字: SQL 索引


鼓掌

0

正能量

0

0

呵呵

0


评论区