page contents

mysql数据库的索引类型

最基本的索引,它没有任何限制,用于加速查询。

attachments-2020-12-6vCaz3wQ5fcf24fdbaa25.png


MySQL索引类型:


1、普通索引

最基本的索引,它没有任何限制,用于加速查询。

创建方法:

a. 建表的时候一起创建

CREATE TABLE mytable ( name VARCHAR(32) , INDEX index_mytable_name (name) );

b. 建表后,直接创建索引

CREATE INDEX index_mytable_name ON mytable(name);

c. 修改表结构

ALTER TABLE mytable ADD INDEX index_mytable_name (name);

注:如果是字符串字段,还可以指定索引的长度,在列命令后面加上索引长度就可以了(例如:name(11))


2、唯一索引

索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。

创建方法:

a. 建表的时候一起创建

CREATE TABLE mytable ( `name` VARCHAR(32) , UNIQUE index_unique_mytable_name (`name`) );

b. 建表后,直接创建索引

CREATE UNIQUE INDEX index_mytable_name ON mytable(name);

c. 修改表结构

ALTER TABLE mytable ADD UNIQUE INDEX index_mytable_name (name);

注:如果是字符串字段,还可以指定索引的长度,在列命令后面加上索引长度就可以了(例如:name(11))


3、主键索引

是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。一般是在建表的时候同时创建主键索引。

创建方法:

a. 建表的时候一起创建

CREATE TABLE mytable ( `id` int(11NOT NULL AUTO_INCREMENT , `name` VARCHAR(32) , PRIMARY KEY (`id`) );

b. 修改表结构

ALTER TABLE test.t1 ADD CONSTRAINT t1_pk PRIMARY KEY (id);

注:如果是字符串字段,还可以指定索引的长度,在列命令后面加上索引长度就可以了(例如:name(11))


4、组合索引

指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用组合索引时遵循最左前缀集合。

创建方法:

a. 建表的时候一起创建

CREATE TABLE mytable ( `id` int(11) , `name` VARCHAR(32) , INDEX index_mytable_id_name (`id`,`name`) );

b. 建表后,直接创建索引

CREATE INDEX index_mytable_id_name ON mytable(id,name);

c. 修改表结构

ALTER TABLE mytable ADD INDEX index_mytable_id_name (id,name);


5、全文索引

主要用来查找文本中的关键字,而不是直接与索引中的值相比较。

fulltext索引跟其它索引大不相同,它更像是一个搜索引擎,而不是简单的where语句的参数匹配。

fulltext索引配合match against操作使用,而不是一般的where语句加like。

它可以在create table,alter table ,create index使用,不过目前只有char、varchar,text 列上可以创建全文索引。

创建方法:

a. 建表的时候一起创建

CREATE TABLE `article` ( `id` int(11NOT NULL AUTO_INCREMENT , `title` char(250NOT NULL , `contents` text NULL , `create_at` int(10NULL DEFAULT NULL , PRIMARY KEY (`id`), FULLTEXT (contents) );

b. 建表后,直接创建索引

CREATE FULLTEXT INDEX index_article_contents ON article(contents);

c. 修改表结构

ALTER TABLE article ADD FULLTEXT INDEX index_article_contents (contents);


总结

虽然索引可以增加查询数据,但对于更新、创建或者删除的时候,需要去维护索引,导致性能会受影响,因此,索引也不能建立太多。


attachments-2020-12-UXUjFlKT5fcf25342e374.jpg

  • 发表于 2020-12-08 15:02
  • 阅读 ( 515 )

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

1135 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1478 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章