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  触发器名;

posted @ 2020-05-23 10:29  东风~  阅读(369)  评论(0)    收藏  举报