hincky的主页 hincky的主页
  • 2023

    • nginx
    • prometheus
    • 小工具
    • 部署
  • 数据库

    • MySQL是怎么使用/运行的
    • Redis核心技术与实战
  • 极客时间

    • Web协议详解与抓包实战
    • SQL必知必会
    • MySQL45讲
个人日常
  • 分类
  • 标签
  • 归档
  • 随笔
GitHub (opens new window)

Hincky

当有趣的人,做想做的事
  • 2023

    • nginx
    • prometheus
    • 小工具
    • 部署
  • 数据库

    • MySQL是怎么使用/运行的
    • Redis核心技术与实战
  • 极客时间

    • Web协议详解与抓包实战
    • SQL必知必会
    • MySQL45讲
个人日常
  • 分类
  • 标签
  • 归档
  • 随笔
GitHub (opens new window)
  • 编程语言

  • 数据库

    • MySQL是怎么使用(运行)的

      • MySQL安装与使用
        • bin目录
        • MySQL服务端程序
          • 以服务的方式启动
          • 手动启动
        • MySQL客户端程序
          • 利用mysql建立连接
        • 客户端与服务端的连接方式
        • 存储引擎
      • 启动选项和系统变量
        • 启动选项
          • 配置文件
          • 读取配置文件的位置顺序
        • 系统变量
        • 系统变量作用范围
          • 设置/改变系统变量的作用范围
        • 状态变量
      • 字符集和比较规则
        • MySQL支持的字符集和比较规则
      • InnoDB
        • InnoDB页简介
        • InnoDB行格式
      • sql优化-成本优化
        • 基于成本的优化步骤
          • 找出所有可能使用的索引
          • 计算全表扫描的代价
          • 计算不同索引的代价
          • 选最低成本方案
      • sql优化-规则优化
    • Redis核心技术与实战

  • 极客时间

  • 读书笔记
  • 数据库
  • MySQL是怎么使用(运行)的
hincky
2023-02-27
目录

sql优化-成本优化

MySQL的执行成本有:

  • IO成本:数据和索引都是存放在磁盘中,IO成本即查询时从磁盘到内存的时间消耗
  • CPU成本:即读取记录,判断搜索条件,结果排序的时间消耗

# 基于成本的优化步骤

  1. 根据搜索条件,找出所有可能使用的索引
  2. 计算全表扫描的代价
  3. 计算使用不同索引执行查询的代价
  4. 对比各代价,选最低成本方案

# 找出所有可能使用的索引

对于B+树索引,只要索引列和常熟使用下面的操作符连接,就会产生一个扫描区间

=,<=>,IN,NOT IN,IS NULL,IS NOT NULL,>,<,>=,<=,BETWEEN,!=,<>,LIKE

下面情况可以使用索引,比如:

  1. key1 IN ('a','b','c')
  2. key2>10 AND key2<1000

不能使用索引的,比如:

  1. key3>key2,没有常数
  2. key LIKE "%hello%",LIKE操作符与通配符开头的字母连接

# 计算全表扫描的代价

# 计算不同索引的代价

# 选最低成本方案

编辑 (opens new window)
#MySQL是怎么使用(运行)的
InnoDB
sql优化-规则优化

← InnoDB sql优化-规则优化→

最近更新
01
集成chatgpt的工具
05-24
02
修改服务器ssh默认连接端口
05-22
03
阿里云免费证书
05-15
更多文章>
Theme by Vdoing | Copyright © 2022-2023 Hincky | MIT License | 粤ICP备2022120427号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式