10分钟学会MySQL索引(使用方法,看完即用)
准备测试数据
登录mysql,复制粘贴,运行即可
drop database if exists v_test;
create database v_test default character set utf8;
use v_test;
DROP TABLE IF EXISTS emp;
CREATE TABLE emp (
id int(11) PRIMARY KEY AUTO_INCREMENT,
age int(11) DEFAULT NULL,
name varchar(50) DEFAULT NULL
)DEFAULT CHARSET=utf8;
INSERT INTO `emp` VALUES (1, 18, '张三');
INSERT INTO `emp` VALUES (2, 20, '李四');
INSERT INTO `emp` VALUES (3, 25, '王五');
INSERT INTO `emp` VALUES (4, 22, '赵六');
前言:
常见的数据库对象有:表,视图,索引,存储过程,函数,触发器等。
2.索引
是数据库对象之一,用于提高字段检索效率,使用者只需要对哪个表中哪些字段建立索引即可,其余什么都不做,数据库会自行处理。
索引可以理解为书的目录,通过目录找内容就很快,一页页的翻速度就很慢。
2.1 创建简单索引:
create index 索引名 ON 表名(字段名); 建议索引名命名规则为:index_表名
例如:对emp表的name字段创建索引。
create index index_emp on emp(name);
2.2 其他索引
1. 主键默认是就是个索引。
2. 创建唯一索引,该字段的值必须唯一,但允许插入空值 。
create unique index 索引名 on 表名(列名);
3. 组合索引
create index 索引名 ON 表名(字段1,字段2,...);
组合索引的最左优先原则:
组合索引的第一个字段必须出现在查询子句中,这个索引才会被用到。如果有一个组合索引(col_a,col_b,col_c),下面的情况都会用到这个索引:
col_a = "some value";
col_a = "some value" and col_b = "some value";
col_a = "some value" and col_b = "some value" and col_c = "some value";
col_b = "some value" and col_a = "some value" and col_c = "some value";
对于最后一条语句,mysql会自动优化成第三条的样子~~。下面的情况就不会用到索引:
col_b = "aaaa";
col_b = "aaaa" and col_c = "ccc";
2.3 查询索引
show index from 表名;
2.4 删除索引
drop index 索引名 on 表名;