mysql查询优化知识点

可以先明确查询过程是什么,经历了哪些流程,再来看哪里可以做优化。

以下列出了我能想到的知识点,如果有错误或补充,希望大家可以提出来

1. 流程

  1. 建立连接(连接池)
  2. 消息发送(转码,utf-8)
  3. 查询过程
    1. 缓存
    2. 语法分析、语义分析
    3. 查询优化器
    4. 查询引擎
      1. 存储引擎选择
      2. 消息预加载(LRU链表)
      3. B+树结构
      4. 索引选择(聚簇索引、非聚簇索引)
        1. 查询成本:消息预处理、采样分析
        2. 索引失效
      5. 索引使用
        1. explain
        2. 回表
        3. 索引覆盖
      6. 如果是写SQL
        1. redo log
        2. undo log
        3. bin log
        4. 页分裂
        5. 事务(隔离性)
  4. 数据返回(转码)

2. 提前准备:

  1. 存储引擎选择(InnoDB、myisam)
  2. 分库分表
    1. 分布式事务
    2. 水平分表、垂直分表
  3. 数据结构设计(varchar、int、datatime)
  4. 索引设计(索引数量、字段区分度)
  5. SQL设计
    1. join、union、having
    2. 索引失效
    3. limit分页
    4. distinct
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容