003—索引

#======================================

#平台:windows7        

#MYsql版本:mysql-5.5.62-winx64(安装版)

#MYsql工具:SQLyog - 64 bitNavicat Premium 12

工具包地址:https://pan.baidu.com/s/17SOAmwcgOw9hYtTzDb9-Tw

#======================================

 

 

优点

提高查询速度

缺点

过多使用会占用较多磁盘空间,同时却会降低更新表的速度

 

INNODBMyISAM支持BTREE索引,MEMORY存储支持哈希索引,三者默认都是BTREE索引。

 

普通索引

 

创建索引的条件:

经常被查询的字段(where子句)

分组的字段(goup by

存在依赖关系的子表额父表的联合查询

设置唯一完整性约束的字段

 

创建索引的方式:(三种方式:创建表之前,创建表之后和通过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)); 

 

注意:如果是CHARVARCHAR类型,length可以小于字段实际长度;如果是BLOBTEXT类型,必须指定 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;

 


猜你喜欢

转载自blog.51cto.com/6854290/2327580
003