mysql优化

查询优化:
1. 加缓存、最好少连接数据库、只查询自己要的数据。
2. SQL优化
— 开启慢查询日志。可以得到查询慢的SQL,为SQL分析做准备。
— EXPLAIN可以测试我们的SQL执行的速度,以便于优化SQL。
从最好到最差的连接类型为:
system > const > eq_ref > ref > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
注意事项:
a. 少用 not in 、 like 、 select * 、
b. 把最精确的条件放到最右边 (条件是从右向左执行,有小括号,先执行小括号,有and和or,先算and,再算or)
c. 条件判断,最好用常量,不要用字段。where a = b and b = 1 ; where a = 1 and b = 1;
d. 有少量的选择判断可以用or,如果有多个选择判断可以用in去代替。where a = 1 or a = 2 // where a in (1,2)
e. 子查询和外连接,一般情况下是外连接比较快。
f. 如果只查询固定条数的数据,可以在后面加上limit。
3. 索引使用
索引是提高查询速度的第一选择。MySQL中普遍使用B+Tree做索引,也就是BTREE
添加索引:
1) 不能过度索引。
2) 给经常用来条件查询的字段加索引。
3) 选择 值分布广泛 的字段 添加索引
4. 表设计
1) 尽量将表字段定义为NOT NULL约束,这是由于在MYSQL中含有空值的列很难进行查询优化,NULL值会使索引以及索引的统计信息变得很复杂。
2) 对于只包含特定类型的字段,可以使用enum、set 等数据类型。
3) 数值型字段的比较比字符串的比较效率高得多,字段类型尽量使用最小、最简单的数据类型。
4) 尽量使用适合长度的数据类型。
5) 合理的加入冗余字段可以提高查询速度
6) 单表不要有太多字段,建议在20以内
垂直拆分 —— 一对一。用户表和用户详细信息表。
水平拆分 —— 一般情况下用ID进行分表,不同的ID段在不同的表(库)里。查询非常困难。水平拆分,不会直接拆分,会使用现成工具 —— mycat
5. 存储引擎。(了解)
MyISAM和Innodb区别:
MyISAM - 查询比较多的时候,不支事务。
InnoDB - 增删改查较多,支持事务和锁。
大批量保存数据的时候怎么办?
在保存数据之前要禁用索引,保存成功之后再打开。
在保存数据之前要禁用唯一性检查,保存成功之后再打开。
在保存数据之前要禁用外键关联,保存成功之后再打开。
在保存数据之前要禁用自动提交,保存成功之后再打开。
可以一条SQL保存多条数据。insert into tab (name) values(""),("")…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值