目录
索引引入
在查询海量的数据需要花费大量的时间,要减少响应时间,就要用到索引。
CREATE INDEX 索引名 on 表名(列名)-- 表示这个表的某列创造一个索引
在创建玩索引后,该表的文件大小会变大:索引本身会占用空间
创建索引后使用同样的查询语句进行查询,处理的速度会大大变快。
创建索引后只对创建了索引的列的查询数据有影响,其他没创建的该慢还是慢
索引机制原理
比如有个学生表,在没有索引时执行查找id = 6 的操作,会对全表进行扫描,逐条对比。
如果创建索引,会生成一个二叉树,如上,将大大减少了查询次数,这就是索引查询数独快的原因
索引指令
-- 查询emp 表有没有索引
SHOW INDEXES from emp;
创建索引
创建索引,再次查询
-- 给emp 表的empno添加一个唯一索引
CREATE UNIQUE INDEX empno_index on emp(empno)
添加普通索引的方式有两种
-- 添加普通索引方式方式1
CREATE INDEX empno_index on emp(empno)、
-- 添加普通索引方式2
ALTER TABLE emp ADD INDEX empno_index(empno)
添加主键索引
第一种是之前给某列添加主键,那就是添加了主键索引
第二中和添加普通索引差不多,只是把index换成 primary key
ALTER TABLE emp ADD PRIMARY KEY empno_index(empno)
删除索引
-- 删除索引
-- 删除普通索引
DROP INDEX empno_index on emp
-- 删除主键索引
ALTER TABLE emp DROP PRIMARY KEY
修改索引
修改索引就是先把索引删除,再添加一个新索引
查询索引
查询索引有三种方式
-- 查询索引
-- 方法1
SHOW INDEX FROM emp
-- 方法2
SHOW INDEXES FROM emp
-- 方法3
SHOW KEYS FROM emp
创建索引练习
-- 1.创建一张订单表order (id号,数量).要求id号为主键,请使
-- 用2种方式来创建主键.(提示:为练习方便,可以是order1 , order2 )
-- 方法1 创建表时添加主键
CREATE TABLE order1 (
id INT PRIMARY KEY,
nums INT)
-- 方法2 通过alter add添加
CREATE TABLE order2(
id INT,
nums INT)
ALTER TABLE order2 ADD PRIMARY KEY id_index(id)
-- 创建一张特价菜谱表menu (id号,菜谱名,厨师,点餐人身份证,价
-- 格).要求id号为主键,点餐人身份证是unique请使用两种方式来创建unique.(提示:为练习方便,可以是menu1 , menu2、
-- 方法1 通过unique在创建表时添加
CREATE TABLE menu1(
id INT PRIMARY KEY,
menu_name VARCHAR(20) NOT NULL DEFAULT '',
cart_id INT UNIQUE,
price INT)
-- 方法2
CREATE TABLE menu2(
id INT PRIMARY KEY,
menu_name VARCHAR(20) NOT NULL DEFAULT '',
cart_id INT,
price INT)
CREATE UNIQUE INDEX cart_index on menu2(cart_id)
小结