首页> 基础笔记 >Mysql基础学习 Mysql基础学习
Mysql四类索引学习笔记
作者:小萝卜 2019-08-28 【 MySql 数据库 】 浏览 1205
简介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)
上一篇:MySQL数据表的类型及存储位置
下一篇:MySQL数据字段属性基础学习