#======================================
#平台:windows7
#MYsql版本:mysql-5.5.62-winx64(安装版)
#MYsql工具:SQLyog - 64 bit、Navicat Premium 12
工具包地址:https://pan.baidu.com/s/17SOAmwcgOw9hYtTzDb9-Tw
#======================================
优点 |
提高查询速度 |
缺点 |
过多使用会占用较多磁盘空间,同时却会降低更新表的速度 |
INNODB和MyISAM支持BTREE索引,MEMORY存储支持哈希索引,三者默认都是BTREE索引。
普通索引
创建索引的条件:
l 经常被查询的字段(where子句)
l 分组的字段(goup by)
l 存在依赖关系的子表额父表的联合查询
l 设置唯一完整性约束的字段
创建索引的方式:(三种方式:创建表之前,创建表之后和通过Alter table创建)
1、创建表之前
CREATE TABLE t_dept(
deptno INT,
dname VARCHAR(20),
loc VARCHAR(20),
INDEX index_deptno(deptno)
);
//建表时,在deptno上创建索引
通过SHOW CREATE TABLE t_dept \G;
或者EXPLAIN SELECT * FROM t_dept WHERE deptno=1\G;
可以查看
2、创建表之后(常用)
语法:CREATE INDEX indexName ON mytable(username(LENGTH));
注意:如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 length。
示例:CREATE INDEX index_deptno ON t_dept(deptno);
3、通过Alter table创建(修改表结构,添加索引)
例子:ALTER TABLE t_dept ADD INDEX index_deptno(deptno);
唯一索引
特点:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。可以更快地查询记录。
创建唯一索引:
1、CREATE UNIQUE INDEX indexName ON mytable(username(length));
示例:CREATE UNIQUE INDEX index_deptno ON t_dept(deptno);
2、CREATE TABLE t_dept(
deptno INT UNIQUE,
dname varchar(20),
loc varchar(40),
unique index index_deptno(deptno)
);
3、ALTER table mytable ADD UNIQUE INDEX 索引名(字段名(length))
示例:ALTER table t_dept ADD UNIQUE INDEX index_deptno(deptno);
全文索引
特点:主要关联char/varchar/text字段,便于快速查询数据量大的字符串字段。
CREATE FULLTEXT INDEX 索引名 ON 表名(字段名(长度))
删除索引
语法:DROP INDEX index_name ON table_name;
显示索引
可以使用 SHOW INDEX 命令来列出表中的相关的索引信息。可以通过添加 \G 来格式化输出信息。
mysql> SHOW INDEX FROM table_name\G;