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

你可能感兴趣的:(mysql查询优化知识点)