索引是一种特别的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据内外一切纪录的援用指针。更浅显的说,数据库索引好比是一本书前面的目次,能加速数据库的查询速率。上述SQL语句,在没有索引的情况下,数据库会遍历悉数200条数据后挑选相符前提的;而有了响应的索引今后,数据库会直接在索引中查找相符前提的选项。假如我们把SQL语句换成“SELECT * FROM article WHERE id=2000000”,那末你是愿望数据库根据递次读取完200万行数据今后给你效果照样直接在索引中定位呢?(注:平常 数据库默许都邑为主键生成索引)。
引荐课程:MySql教程。
索引分为聚簇索引和非聚簇索引两种,聚簇索引是根据数据寄存的物理位置为递次的,而非聚簇索引就不一样了;聚簇索引能进步多行检索的速率,而非聚簇索引关于单行的检索很快。
MySQL索引的范例
1. 一般索引
这是最基本的索引,它没有任何限定,比方上文中为title字段建立的索引就是一个一般索引,MyIASM中默许的BTREE范例的索引,也是 我们大多数情况下用到的索引。
–直接建立索引 CREATE INDEX index_name ON table(column(length)) –修正表构造的体式格局增加索引 ALTER TABLE table_name ADD INDEX index_name ON (column(length)) –建立表的时刻同时建立索引 CREATE TABLE `table` ( `id` int(11) NOT NULL AUTO_INCREMENT , `title` char(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , `content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL , `time` int(10) NULL DEFAULT NULL , PRIMARY KEY (`id`), INDEX index_name (title(length)) ) –删除索引 DROP INDEX index_name ON table
2. 唯一索引
与一般索引相似,差别的就是:索引列的值必需唯一,但许可有空值(注重和主键差别)。假如是组合索引,则列值的组合必需唯一,建立要领和一般索引相似。
–建立唯一索引 CREATE UNIQUE INDEX indexName ON table(column(length)) –修正表构造 ALTER TABLE table_name ADD UNIQUE indexName ON (column(length)) –建立表的时刻直接指定 CREATE TABLE `table` ( `id` int(11) NOT NULL AUTO_INCREMENT , `title` char(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , `content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL , `time` int(10) NULL DEFAULT NULL , PRIMARY KEY (`id`), UNIQUE indexName (title(length))
以上就是mysql索引怎样用的细致内容,更多请关注ki4网别的相干文章!