加入收藏 | 设为首页 | 会员中心 | 我要投稿 广州站长网 (https://www.020zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQL索引(INDEX)

发布时间:2023-01-09 16:31:42 所属栏目:MsSql教程 来源:互联网
导读: SQL 索引(Index)用于提高数据表的查询速度。一个表可以创建多个索引,一个索引可以包含一个或者多个字段。
不使用索引,数据库引擎将遍历整个表。
从表面上看,索引类似于书的目录,在没

SQL 索引(Index)用于提高数据表的查询速度。一个表可以创建多个索引,一个索引可以包含一个或者多个字段。

不使用索引,数据库引擎将遍历整个表。

从表面上看,索引类似于书的目录,在没有目录的情况下,要从书中查找某项内容就必须阅读全文,而有了目录之后,通过页码就可以很快定位到相关内容。

从本质上看,索引是根据表的一个或者多个字段生成的子表,该子表中的数据已经进行了排序。子表除了包含指定字段中的数据,还包含一个 rowid 列,用于存储当前记录在原始表中的位置。用户无法看到索引,它只是用来加快查询速度。

为了提高查询效率mssql 索引,便于后期维护,索引都是基于某种数据结构而创建的,比如 B+ 树、B- 树、位图等。索引的使用成本在表中插入、修改或者删除数据时,数据库引擎也必须维护索引,以保持索引和原始表的同步;也就是说,使用索引是有额外开销的。不适合的索引,或者过多的索引,都会降低插入、修改和删除数据的效率。

索引还会占用磁盘空间,增加 I/O 成本,过多的索引甚至会增加碎片。

鉴于以上两点,使用索引时应该遵循以下几条原则:语法在某个字段上创建索引的基本语法如下:

CREATE INDEX index_name
ON table_name ( column1, column2.....);

index_name 是索引的名字,以后在删除索引时会用到。

示例使用 SQL 语句创建一个包含七列的website 表:

CREATE TABLE website (
    id      INT              NOT NULL   AUTO_INCREMENT,
    name    VARCHAR(20)      NOT NULL,
    url     VARCHAR(30),
    age     TINYINT UNSIGNED NOT NULL,
    alexa   INT UNSIGNED     NOT NULL,
    uv      FLOAT                       DEFAULT '0',
    country CHAR(3)          NOT NULL,
    PRIMARY KEY (`id`)
);

现在您可以针对 name 字段创建索引,用以提高检索姓名时的效率,如下所示:

CREATE INDEX myIndex
ON website(name);

myIndex 是索引的名字。删除索引删除索引请使用下面的 SQL 语句:

ALTER TABLE website
DROP INDEX myIndex;

(编辑:广州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!