MySQL索引

来源: 2024-07-06 00:03:00 播报

主键索引

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

增加主键

1、 在创建表的时候,直接在字段之后,跟primary key关键字(主键本身不允许为空)【优点: 非常直接; 缺点: 只能使用一个字段作为主键】。

2、 在创建表的时候, 在所有的字段之后, 使用primary key(主键字段列表)来创建主键(如果有多个字段作为主键,可以是复合主键)。

3、 当表已经创建好之后, 额外追加主键: 可以通过修改表字段属性, 也可以直接追加。

格式:

Alter table 表名  add primary key(字段列表); 

前提: 表中字段对应的数据本身是独立的(不重复)。

主键约束

主键对应的字段中的数据不允许重复: 一旦重复,数据操作失败(增和改)。

更新主键和删除主键: 没有办法更新主键: 主键必须先删除,才能增加。

格式:

Alter table 表名 drop primary key;

自增长使用

1、 当自增长被给定的值为NULL或者默认值的时候会触发自动增长。【自增长的第一个元素是1,且每次都是自增1】

2、 自增长如果对应的字段输入了值,那么自增长失效: 但是下一次还是能够正确的自增长(从最大值 1)。

3、 如何确定下一次是什么自增长呢? 可以通过查看表创建语句看到。

修改自增长

1、 自增长如果是涉及到字段改变: 必须先删除自增长,后增加(一张表只能有一个自增长)。

2、 修改当前自增长已经存在的值: 修改只能比当前已有的自增长的最大值大,不能小(小不生效)。

格式:

Alter table 表名 auto_increment  = 值;

查看自增长对应的变量: show variables like ‘auto_increment%’;

删除自增长

自增长是字段的一个属性: 可以通过modify来进行修改(保证字段没有auto_increment即可)。

格式:

Alter table 表名 modify 字段 类型;

唯一索引 UNIQUE

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

创建唯一索引

格式:

ALTER TABLE table_name ADD UNIQUE (column);

创建唯一组合索引

格式:

ALTER TABLE table_name ADD UNIQUE (column1,column2);

普通索引 INDEX

INDEX: 最基本的索引,它没有任何限制。

格式:

ALTER TABLE table_name ADD INDEX index_name (column);

组合索引 INDEX

组合索引,即一个索引包含多个列。多用于避免回表查询。

格式:

ALTER TABLE table_name ADD INDEX index_name(column1, column2, column3);

全文索引 FULLTEXT

全文索引(也称全文检索)是目前搜索引擎使用的一种关键技术。

格式:

ALTER TABLE table_name ADD INDEX index_name (column);

注意: 索引一经创建不能修改,如果要修改索引,只能删除重建。可以使用DROP INDEX index_name ON table_name;删除索引。

索引设计的原则:

1、适合索引的列是出现在where子句中的列,或者连接子句中指定的列。

2、基数较小的类,索引效果较差,没有必要在此列建立索引。

3、使用短索引,如果对长字符串列进行索引,应该指定一个前缀长度,这样能够节省大量索引空间。

4、不要过度索引。索引需要额外的磁盘空间,并降低写操作的性能。在修改表内容的时候,索引会进行更新甚至重构,索引列越多,这个时间就会越长。

所以只保持需要的索引有利于查询即可。