数据库优化

https://mp.weixin.qq.com/s/9rRI5DAq2eyqt43jGceOwg

https://www.cnblogs.com/liliuguang/p/11015964.html

https://www.zhihu.com/question/36431635/answer/381557352

  1. 表字段选择合适的字段类型, 根据字段的需要来定。 字段尽量设置为非空, 不用比较Null值. 有些值可以设置成enum,

  2. 根据实际情况,使用连接来代替子查询。特别是连接表中的on 条件字段 建有索引的话

  3. 可以使用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 进行优化,所以分析执行计划很重要

  4. 使用联合(UNION)来代替手动创建的临时表

  5. 用事务 保持数据库中数据的一致性和完整性

    事务的另一个重要作用是当多个用户同时使用相同的数据源时,它可以利用锁定数据库的方法来为用户提供一种安全的访问方式,这样可以保证用户的操作不被其它的用户所干扰

  6. 锁定表

  7. 合理使用索引 索引应建立在那些将用于JOIN,WHERE判断和ORDERBY排序的字段上

    索引的详细介绍 https://baijiahao.baidu.com/s?id=1658477030542020248&wfr=spider&for=pc [重点学习]

  8. 优化的查询语句同3

    最好是在相同类型的字段间进行比较的操作

    建有索引的字段上尽量不要使用函数进行操作

    在搜索字符型字段时,我们有时会使用LIKE关键字和通配符,这种做法虽然简单,但却也是以牺牲系统性能为代价的

  9. 读写分离

  10. 分库分表

posted @ 2020-11-26 23:09  trendmaster  阅读(79)  评论(0)    收藏  举报