数据库优化
https://mp.weixin.qq.com/s/9rRI5DAq2eyqt43jGceOwg
https://www.cnblogs.com/liliuguang/p/11015964.html
https://www.zhihu.com/question/36431635/answer/381557352
表字段选择合适的字段类型, 根据字段的需要来定。 字段尽量设置为非空, 不用比较Null值. 有些值可以设置成enum,
根据实际情况,使用连接来代替子查询。特别是连接表中的on 条件字段 建有索引的话
可以使用explain语句查看执行计划 https://www.cnblogs.com/tufujie/p/9413852.html
查看该SQL语句有没有使用上了索引,有没有做全表扫描
id:选择标识符
select_type:表示查询的类型。
table:输出结果集的表
partitions:匹配的分区
type:表示表的连接类型
possible_keys:表示查询时,可能使用的索引
key:表示实际使用的索引
key_len:索引字段的长度
ref:列与索引的比较
rows:扫描出的行数(估算的行数)
filtered:按表条件过滤的行百分比
Extra:执行情况的描述和说明• EXPLAIN不会告诉你关于触发器、存储过程的信息或用户自定义函数对查询的影响情况
• EXPLAIN不考虑各种Cache
• EXPLAIN不能显示MySQL在执行查询时所作的优化工作
• 部分统计信息是估算的,并非精确值
• EXPALIN只能解释SELECT操作,其他操作要重写为SELECT后查看执行计划。查询优化后的语句:
explain EXTENDED select ...
show warnings;
1、mysql 嵌套子查询效率确实比较低
2、可以将其优化成连接查询
3、建立合适的索引
4、学会分析 sql 执行计划,mysql 会对 sql 进行优化,所以分析执行计划很重要
使用联合(UNION)来代替手动创建的临时表
用事务 保持数据库中数据的一致性和完整性
事务的另一个重要作用是当多个用户同时使用相同的数据源时,它可以利用锁定数据库的方法来为用户提供一种安全的访问方式,这样可以保证用户的操作不被其它的用户所干扰
锁定表
合理使用索引 索引应建立在那些将用于JOIN,WHERE判断和ORDERBY排序的字段上
索引的详细介绍 https://baijiahao.baidu.com/s?id=1658477030542020248&wfr=spider&for=pc [重点学习]
优化的查询语句同3
最好是在相同类型的字段间进行比较的操作
建有索引的字段上尽量不要使用函数进行操作
在搜索字符型字段时,我们有时会使用LIKE关键字和通配符,这种做法虽然简单,但却也是以牺牲系统性能为代价的
读写分离
分库分表

浙公网安备 33010602011771号