Mysql从入门到放弃(五)

2020-02-17 17:36:51 浏览数 (1)

MySQL主要有四种索引

主键索引 primary key

唯一索引 unique

常规索引 index

全文索引 fulltext

(1) 主键索引

主键索引是关系数据库中最常见的索引类型 主要作用是确定数据表里一条特定的数据记录的位置

我们可以在字段后添加primary key 来对字段设置为主键索引

注意事项

  1. 最好为每张表指定一个主键 但不是必须指定
  2. 一个表只能指定一个主键 而且主键的值不能为空 通常和auto_increment 搭配

创建

代码语言:javascript复制
create testprim(
id int unsigned primary key auto_increment
)
自增得步长

mysql的默认步长是居于会话session的 查看全局变量 其中默认为1

查看步长

代码语言:javascript复制
show session variables like 'auto_inc%';

设置步长 只能针对当前的会话

代码语言:javascript复制
set session auto_incrment_increment = 2; 设置会话步长为2

查看全局

代码语言:javascript复制
show global variables liek 'auto_inc%';

修改全局级别的

代码语言:javascript复制
set global auto_increment_increment = 1;
修改自增值(自增归位)
代码语言:javascript复制
alter table user auto_increment = 1;
truncate 表名 (清空表 并将自增归位)
(2) 常规索引 index

常规索引技术是关系型数据库查询中最重要的技术 如果要提升数据库的性能 索引优化是首先应该考虑的 因为它能使我们的数据库得到最大性能方面的提升

缺点:

  1. 多占用磁盘空间
  2. 会减慢插入 删除 和 修改的操作

创建常规索引:

创建常规索引 可以使用 index 和 key 关键字随表一同创建

实例:

代码语言:javascript复制
mysql> create table testindex(
    -> username varchar(20),
    -> index luckyindex(username)
    -> );
mysql> create table testkey(
    -> username varchar(20),
    -> key (username)
    -> );
    

说明:

给username字段设置一个常规索引 索引名称为luckyindex

如果不给所以字段起名称 默认索引名称为字段名

注意:

  1. 在给mysql创建常规索引和唯一索引的时候 单独一行去创建 不要和字段放在一行 出错!
  2. 一个表中可以存在多个常规索引 但是要根据具体的情况去设置 某个字段有大量的查询的时候
(4) 唯一索引

唯一索引与主键索引一样 都可以防止创建重复的值 但是 不同之处在于 每个数据表中只能有一个主键索引 但是可以有多个唯一索引 使用unique对字段 定义唯一索引

注意:

如果在给表中字段插入值的情况报错 查看 字段是否设置了唯一索引

创建

代码语言:javascript复制
mysql> create table testunique(
    -> username varchar(20),
    -> email varchar(50),
    -> phone char(11),
    -> unique(username),
    -> unique uniemail(email),
    -> unique(phone)
    -> );

说明:

给usernam email phone设置了唯一索引 其中email设置了索引名称为uniemail 其余索引名称为 默认字段名

(5) 全文索引

全文索引在mysql中是一个fulltext类型索引 但fulltext索引只能用于MyISAM表 并且只可以在char varchar 或text类型的字段上创建

缺点:

fulltext是不支持中文全文索引的

创建

代码语言:javascript复制
 CREATE TABLE `textfull` (
  `article` text,
  FULLTEXT KEY `article` (`article`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
代码语言:javascript复制
alter table 表名 add fulltext(字段名称)

0 人点赞