目录

在查询海量的数据需要花费大量的时间,要减少响应时间,就要用到索引。
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)
