博客
关于我
mysql执行顺序与索引算法
阅读量:799 次
发布时间:2023-02-12

本文共 1094 字,大约阅读时间需要 3 分钟。

MySQL执行顺序与索引算法

书写顺序

MySQL查询的书写顺序遵循以下规则:

  • 必须字段

    • select:指定要查询的字段。
    • from:指定数据来源表。
  • 可选字段

    • distinct:去重。
    • join:表关联。
    • on:关联条件。
    • where:过滤条件。
    • group by:分组。
    • having:聚合后过滤。
    • sum、count、max、avg:聚合函数。
    • order by:排序。
    • limit:限制结果数量。
  • 执行顺序

    MySQL执行查询时遵循以下顺序:

  • from 阶段开始。
  • on 阶段处理关联条件。
  • join 阶段将相关表连接。
  • where 阶段过滤数据。
  • group by 阶段对数据进行分组。
  • having 阶段对聚合结果进行过滤。
  • select 阶段指定最终显示的字段。
  • distinct 阶段去重。
  • order by 阶段排序。
  • limit 阶段限制结果数量。
  • 提问解答

    Q:为什么字段别名不能在 where 中使用,但可以在 order by 中使用?

    A:

    • select 语句的执行顺序在 where 之后,因此在 where 阶段之前无法使用字段别名。
    • order by 阶段在 select 之后,可以使用字段别名。

    关键词含义

    from

    • 指定查询的数据表。

    join

    • 关联查询表。
    • 驱动表选择原则:优先选择结果集最少的表。

    on

    • 关联条件。

    where

    • 过滤数据。
    • 执行顺序:自下而上、从右到左。

    group by

    • 分组。
    • 执行顺序:从左到右。

    avg

    • 计算平均值。

    having

    • 聚合后过滤。

    select

    • 指定显示字段。

    distinct

    • 去重。

    order by

    • 排序。
    • 执行顺序:从左到右。

    limit

    • 截取结果。

    索引关联中使用的算法

    Nested-Loop join 算法

    • Simple Nested-Loop Join (SNLJ):驱动表记录与被驱动表全表匹配。
    • Index Nested-Loop Join (INLJ):基于索引进行匹配,减少匹配次数。
    • Block Nested-Loop Join (BNLJ):批量缓存匹配,减少内层表遍历次数。
    • Batched Key Access Join (BKAJ):利用索引排序,减少随机IO。

    Join Buffer

    • 缓存参与查询的所有列。
    • 默认缓存大小为256K。
    • 使用 optimizer_switch = block_nested_loop 控制性能。

    Offer突击训练营

    • 面试保障:提供offer保障。
    • 学习目标:15-20天掌握技术成果。
    • 项目经验:提供真实开发细节。

    点击了解更多

    转载地址:http://jbdfk.baihongyu.com/

    你可能感兴趣的文章
    nanoGPT 教程:从零开始训练语言模型
    查看>>
    NASA网站曝严重漏洞,或将沦为黑客钓鱼网站?
    查看>>
    Nash:轻量级、安全且可靠的脚本语言
    查看>>
    NAS、SAN和DAS的区别
    查看>>
    NAS个人云存储服务器搭建
    查看>>
    NAS服务器有哪些优势
    查看>>
    NAT PAT故障排除实战指南:从原理到技巧的深度探索
    查看>>
    nat 网卡间数据包转发_你是不是从来没有了解过光纤网卡,它跟普通网卡有什么区别?...
    查看>>
    NAT-DDNS内网穿透技术,快解析DDNS的优势
    查看>>
    NAT-DDNS内网穿透技术,快解析DDNS的优势
    查看>>
    NAT-DDNS内网穿透技术,解决动态域名解析难题
    查看>>
    natapp搭建外网服务器
    查看>>
    NativePHP:使用PHP构建跨平台桌面应用的新框架
    查看>>
    nativescript(angular2)——ListView组件
    查看>>
    NativeWindow_01
    查看>>
    Native方式运行Fabric(非Docker方式)
    查看>>
    Nature | 电子学“超构器件”, 从零基础到精通,收藏这篇就够了!
    查看>>
    Nature和Science同时报道,新疆出土四千年前遗骸完成DNA测序,证实并非移民而是土著...
    查看>>
    Nature封面:只低一毫米,时间也会变慢!叶军团队首次在毫米尺度验证广义相对论...
    查看>>
    Nat、端口映射、内网穿透有什么区别?
    查看>>