创建mysql触发器时候,语法没出现错误
出现的问题为
应为8个值,现在有7个值
你前面insert里写了8个字段
可是select里只写了7个字段,数量不一致
这个字段哪里来呢
想要了解这个其实就会和 索引最左前缀原则底层实现原理 扯上关系!
只要我们的联合索引设计的好,其实可以通过三四个联合索引,将80%的SQL查询语句都覆盖到的!
以下那一条SQL会走索引?
-- 联合索引
KEY 'idx_name_age_position' ('name','age','position') USING BTREE;
-- 以下那一条SQL会走索引?
EXPLAIN SELECT * FROM employees WHERE name = 'Bill' and age = 30;
EXPLAIN SELECT * FROM employees WHERE age = 30 and position = 'dev';
EXPLAIN SELECT * FROM employees WHERE position = 31;
显然,我们根据 索引最左前缀原则底层实现原理 可以知道只有第一条SQL会走索引!
至于为什么,我们以第二条SQL为例,首先我们知道该联合主键的('name','age','position')按这个顺序排序的,也就是他们在索引树中,先比较name字段,当name一样时,才会比较age字段,以此类推...
第二条SQL为什么没有走索引就很好解释了。当缺少name的时候,后面的字段已经是无序的了,根本就走不了索引。
所以我们想要搞清楚MySQL的索引,究其根本,还是要弄明白B+树这种数据结构,理解它的执行逻辑。