Mysql 索引优化 SQL优化 表优化 设计表注意问题

一.什么是索引?
排好序的数据结构就是索引。
优点:降低了IO成本,提高了检索效率,通过索引对数据进行排序
缺点; 大大提高了查询效率,同事也降低了更新表的速度,每次更新删除插入都要对索引文件进行操作。

二.索引的分类
单值索引 ,没有什么要求
唯一索引,索引值必须唯一
聚合索引(联合索引) 包含多个列
主键索引 自动建立索引

三.那些情况下适合建立索引?
频繁使用的可以简历索引
where条件的可以建立索引
常用的外键可以建立索引
在并发下考虑创建联合索引
排序字段创建索引
统计字段可以建立索引,例如count(),max()

四.那些情况不建立索引
表记录太多(比如几千万数据 你查询百分之25左右就会出现索引失效)
经常增删改查的字段不适合建立索引
覆盖率不好的不建议建立索引。(列如 状态 性别 )

五.SQL 优化
全值匹配
最左原则
where条件不计算
不要使用 != < > 全盘扫描
is not null 无法使用索引
like%在前全盘扫描
字符串要加单引号
少用or
确定是一个结果集 使用limit 1
能用between 就不要用in

六.查看SQL执行计划 查看没使用SQL原因
explan 关键字
几个关键字
id : id相同 执行顺序从上到下
key: 实际使用索引
rows: 数值越小越好
type: const>eq_ref>ref>range>index>all
extra: using fliesort mysql无法利用索引排序,文件排序 usingtemporary 临时表保存中间结果,在对查询结果排序使用临时表 using join buffer 表示使用了连接缓存

七.表设计注意事项
1、字段名及字段配制合理性
剔除关系不密切的字段;
字段命名要有规则及相对应的含义(不要一部分英文,一部分拼音,还有类似a.b.c这样不明含义的字段);
字段命名尽量不要使用缩写(大多数缩写都不能明确字段含义);
字段不要大小写混用(想要具有可读性,多个英文单词可使用下划线形式连接);
字段名不要使用保留字或者关键字;
保持字段名和类型的一致性;
慎重选择数字类型;
给文本字段留足余量;
2、系统特殊字段处理及建成后建议
添加删除标记(例如操作人、删除时间);
建立版本机制;
3、表结构合理性配置
多型字段的处理,就是表中是否存在字段能够分解成更小独立的几部分(例如:人可以分为男人和女人);
多值字段的处理,可以将表分为三张表,这样使得检索和排序更加有调理,且保证数据的完整性!
4、其它建议
对于大数据字段,独立表进行存储,以便影响性能(例如:简介字段);
使用varchar类型代替char,因为varchar会动态分配长度,char指定长度是固定的;
给表创建主键,对于没有主键的表,在查询和索引定义上有一定的影响;
避免表字段运行为null,建议设置默认值(例如:int类型设置默认值为0)在索引查询上,效率立显;
建立索引,最好建立在唯一和非空的字段上,建立太多的索引对后期插入、更新都存在一定的影响(考虑实际情况来创建);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值