MySQL教程5 MySQL8存储引起 2.MySQL8锁策略 学习猿地( 三 )


文章插图

MySQL教程5 MySQL8存储引起 2.MySQL8锁策略 学习猿地

文章插图
drop unique index ix_name on tb2删除唯一索引3. 主键索引
创建主键索引就是创建主键;
4. 组合索引
在创建索引的时候,选择两个列名 。规则:最左匹配,根据创建索引时,最左侧的列名为根据,判断是否走索引 。
a. 普通组合索引: 无约束 。
b. 联合位移组合索引:有约束,两列数据同时不相同,才能插入 。
 5. 执行计划
相对比较准确表达当前SQL运行状况 。
explain SQL语句;
type = ALL 全数据表扫描;效率低 。
type = index 全索引表扫描;效率低 。
在SQL语句后加 limit 会提高效率 。
MySQL教程5 MySQL8存储引起 2.MySQL8锁策略 学习猿地

文章插图
 type 是 ALL 或者Index时,都是有优化的余地 。
6. 如何命中索引
(1) like ‘%xx‘: select * from tb where name like ‘%om‘ 不走索引 like ‘da%‘走索引
(2) 使用函数:select * from tb where reverse(name) = ‘damon‘
(3) 使用or :select* from tb where nid = 1 or name = ‘damon‘; nid和name都是索引就不走索引
(4) 类型不一致:select * from tb where name = 1;
(5) 使用!=: select * from tb where name != ‘damon‘;当name不是主键时,不会走索引,反之,走索引;
(6) 使用 >:select * from tb where name > ‘alex‘; 如果主键是索引还是整数类型,则还是会走索引 。
(7) 使用order by:select email from tb order by email,name;当根据索引排序时,如果映射不是索引,则不会走索引 。如果对主键排序,则还是走索引;
(8) 注意事项
a. 避免使用select * ;
b. 尽量使用char代替varchar;
c. 表的字段顺序固定长度的字段优先;
d. 当时用多个条件查询时,多使用组合索引代替单个索引;
e. 尽量使用短索引;
f. 使用连接(JOIN)代替子查询(Sub-Queries);
g. 连表时注意条件类型须一致;
h. 索引散列(重复少),不适合建索引 。例:性别;
 六 分页
如果数据量比较大时,越到后面使用limit分页的效率越低,解决方案:
where nid > 1000000 limit x, m 直接跳过前1000000数据,往下扫描 。
MySQL学习(5)
标签:targe   进制   col   out   不一致   多字节   varchar   事务   tar