文章插图
文章插图
drop unique index ix_name on tb2删除唯一索引3. 主键索引
创建主键索引就是创建主键;
4. 组合索引
在创建索引的时候,选择两个列名 。规则:最左匹配,根据创建索引时,最左侧的列名为根据,判断是否走索引 。
a. 普通组合索引: 无约束 。
b. 联合位移组合索引:有约束,两列数据同时不相同,才能插入 。
5. 执行计划
相对比较准确表达当前SQL运行状况 。
explain SQL语句;
type = ALL 全数据表扫描;效率低 。
type = index 全索引表扫描;效率低 。
在SQL语句后加 limit 会提高效率 。
文章插图
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
- 打造百变女郎,PS教学:给衣服添加图案教程来了!
- MySQL教程3 MySQL8操作数据表中记录 13.MySQL多表更新 学习猿地
- MySQL教程-19-数据排序
- mysql:索引的本质详解
- mysql事务的隔离性等级事故
- mysql:索引之二叉树初步理解
- 布局篇 前端教程H5、CSS3怎么让文字内容都垂直居中?弹性布局
- mysql:数据库之删除记录对自动增长的影响
- 法国棍子面包,你做对了吗?详尽教程教您做正宗法棍!
- 怎么用PS做海报啊?