MySQL索引、存储过程、触发器
什么是索引
索引就像是书的目录,是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度。索引中包含由表或视图中的一列或多列生成的键。这些键存储在一个(BTree)结构中,使SQL可以快速有效地查找与键值关联的行。
创建索引
create index 索引名 on 表名(列的列表(length));
创建唯一索引
create unique index 索引名 on 表名(列的列表(length));
如果是char,varcher类型,length可以小于字段实际长度;如果是blob和text类型,必须指定 length。
删除索引
drop index [索引名字] on 表名;
显示索引
show index from 表名; \G
修改表
alter table 表名 add index [索引名字](列的列表);
唯一索引的修改表
alter table 表名 add unique [索引名字](列的列表);
索引失效
如果条件中有or,即使其中有条件带索引也不会使用(这就是为什么尽量少使用or的原因)(注意:要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引)
对于多列索引,不是使用的第一部分(不符合最左前缀原则),则不会使用索引,例子如下:
如果select * from key1=1 and key2= 2;则建立组合索引(key1,key2);
select * from key1 = 1;组合索引有效;
select * from key1 = 1 and key2= 2;组合索引有效;
select * from key2 = 2;组合索引失效;不符合最左前缀原则
like查询是以%开头
如果列类型是字符串,那一定要在条件中使用引号引起来,否则不会使用索引
如果mysql估计使用全表扫描比使用索引快,则不使用索引
存储过程
存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。是数据库 SQL 语言层面的代码封装与重用。
创建存储过程

删除存储过程
使用DROP语句即可删除
drop procedure p2;
触发器
达到触发的要求就触发某个操作
创建触发器
create trigger 触发器名 before | after 触发事件 on 表名 for each row 执行语句
创建多条sql语句触发器
create trigger 触发器名 before | after 触发事件 on 表名 for each row begin 执行语句列表 end
查看触发器
show triggers;查看触发器信息
删除触发器
drop trigger 触发器名;

浙公网安备 33010602011771号