首页> 基础笔记 >Mysql基础学习 Mysql基础学习

Mysql四类索引学习笔记

作者:小萝卜 2019-08-28 浏览 896

简介Mysql索引学习笔记,主键索引(PRIMARY KEY)、唯一索引(UNIQUE)、常规索引(INDEX)、全文索引(FULLTEXT)

在MySQL中,主要有四类索引:

主键索引(PRIMARY KEY)

唯一索引(UNIQUE)

常规索引(INDEX)

全文索引(FULLTEXT)

主键索引

主键索引是关系数据库中最常见的索引类型,主要作用是确定数据表里一条特定的数据记录的位置。我们可以在字段后添加PRIMARY KEY来对字段设置为主键索引。

注意:

1.最好为每张表指定一个主键,但不是必须指定。

2.一个表只能指定一个主键,而且主键的值不能为空

3.主键可以有多个候选索引(例如NOT NULL,AUTO_INCREMENT)

添加主键索引:

mysql>
-- 为uu表添加id主键。
mysql> alter table uu add primary key kid(id);
Query OK, 5 rows affected (0.06 sec)
Records: 5  Duplicates: 0  Warnings: 0

mysql> desc uu;
+-------+---------------+------+-----+---------+-------+
| Field | Type          | Null | Key | Default | Extra |
+-------+---------------+------+-----+---------+-------+
| id    | int(11)       | NO   | PRI | 0       |       |
| name  | varchar(16)   | YES  |     | NULL    |       |
| mm    | tinyint(4)    | NO   |     | 20      |       |
| age   | tinyint(4)    | YES  |     | NULL    |       |
| sex   | enum('m','w') | YES  |     | NULL    |       |
+-------+---------------+------+-----+---------+-------+
5 rows in set (0.00 sec)


唯一索引

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

常规索引

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

1.多占用磁盘空间

2.会减慢插入,删除和修改操作

3.需要按照索引列上排序格式执行

创建索引我们可以使用INDEX和KEY关键字随表一同创建。

创建和删除常规索引:

-- 为uu表的name字段添加myname索引
mysql> alter table uu add index  myname(name);
Query OK, 0 rows affected (0.14 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc uu;
+-------+---------------+------+-----+---------+-------+
| Field | Type          | Null | Key | Default | Extra |
+-------+---------------+------+-----+---------+-------+
| id    | int(11)       | YES  |     | NULL    |       |
| name  | varchar(16)   | YES  | MUL | NULL    |       |
| mm    | tinyint(4)    | NO   |     | 20      |       |
| age   | tinyint(4)    | YES  |     | NULL    |       |
| sex   | enum('m','w') | YES  |     | NULL    |       |
+-------+---------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

-- 删除uu表的myname索引
mysql> alter table uu drop index myname;
Query OK, 0 rows affected (0.06 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc uu;
+-------+---------------+------+-----+---------+-------+
| Field | Type          | Null | Key | Default | Extra |
+-------+---------------+------+-----+---------+-------+
| id    | int(11)       | YES  |     | NULL    |       |
| name  | varchar(16)   | YES  |     | NULL    |       |
| mm    | tinyint(4)    | NO   |     | 20      |       |
| age   | tinyint(4)    | YES  |     | NULL    |       |
| sex   | enum('m','w') | YES  |     | NULL    |       |
+-------+---------------+------+-----+---------+-------+
5 rows in set (0.00 sec)


全文索引

全文索引在MySQL中是一个FULLTEXT类型索引,但FULLTEXT索引只能用于MyISAM表,并且只可以在CHAR、VARCHAR或TEXT类型的列上创建,也允许创建在一个或多个数据列上。

但是FULLTEXT是不支持中文全文索引的,所以建议使用效率更高的全文索引引擎Sphinx。

 

很赞哦! (0)

文章评论

    高端网站建设