iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL基于规则优化
  • 329
分享到

MySQL基于规则优化

MySQL基于规则优化 2016-07-05 19:07:21 329人浏览 无得
摘要

条件化简:移除不必要括号、常熟传递、等值传递、移除无用条件、表达式计算、HAVING子句和WHERE子句合并、常量表检测 外连接消除:空值拒绝(外连接中通过where子句过滤NULL值),符合条件后,内外连接可以

MySQL基于规则优化

  1. 条件化简:移除不必要括号、常熟传递、等值传递、移除无用条件、表达式计算、HAVING子句和WHERE子句合并、常量表检测
  2. 外连接消除:空值拒绝(外连接中通过where子句过滤NULL值),符合条件后,内外连接可以互相转换,优化器可以评估表的不同连接顺序降低查询成本
  3. 子查询优化: 按返回的结果集不同子查询分为标量子查询(查询单一值)、行子查询、列子查询和表子查询 按与外层查询关系分为不相关子查询(子查询不依赖外层查询结果)和相关子查询 子查询在布尔表达式的使用:
  4. 对于<、>、=之类操作符来说,子查询只能是标量子查询或行子查询
  5. 对于[NOT] IN(判断某个操作数是否在某个子查询结果集中)/ANY/SOME (只要子查询结果集中存在某个值和给定操作数比较为true,则表达式为true)/ALL(操作数必须与结果集全部匹配)来说,子查询是一个集合
  6. EXIST,仅需要判断子查询是否有记录。

注:

  1. 子查询必须用小括号扩起来。
  2. 在SELECT子句中的子查询必须是标量子查询。
  3. 在想要得到标量子查询或者行子查询,但又不能保证子查询的结果集只有一条记录时,应该使用LIMIT 1语句来限制记录数量。
  4. 对于[NOT] IN/ANY/SOME/ALL子查询来说,子查询中不允许有LIMIT语句。
  5. ORDER BY子句、DISTINCT语句以及没有聚集函数以及HAVING子句的GROUP BY子句在子查询中无意义,查询优化器会直接删除。
  6. 不允许在一条语句中增删改某个表的记录时同时还对该表进行子查询。

物化表:不直接将不相关子查询的结果集作为外层查询的参数,而是将结果集写入一个临时表中,写入记录会被去重,表的列就是结果集的列。

物化表查询相当于子查询与外层查询的内连接。

半连接:对于s1中的某条记录,只关心在s2中是否有记录与之匹配,而不关心具体有多少条记录与之匹配,只保留s1表的记录。

半连接实现策略,查询优化器会选择以下成本最低的策略:

  1. Table pullout (子查询中的表上拉):子查询查询条件只有主键或唯一索引时,转连接查询。
  2. DuplicateWeedout execution strategy (重复值消除):加入结果集前,尝试加入到只包含主键的临时表,根据能否插入判断是否重复。
  3. LooseScan execution strategy (松散扫描):对于多条相同值索引,只取第一条查询记录,匹配成功后,把同索引均加入结果集。
  4. Semi-join Materialization execution strategy(半连接物化策略):不想管子查询物化后连接查询
  5. FirstMatch execution strategy (首次匹配):取一条外层查询的中的记录,然后到子查询的表中寻找符合匹配条件的记录,如果能找到一条,则将该外层查询的记录放入最终的结果集并且停止查找更多匹配的记录,如果找不到则把该外层查询的记录丢弃掉,重复上述过程

semi-join的适用条件:

  1. 子查询必须是和IN语句组成的布尔表达式,并且在外层查询的WHERE或者ON子句中出现。
  2. 外层查询也可以有其他的搜索条件,只不过和IN子查询的搜索条件必须使用AND连接起来。
  3. 该子查询必须是一个单一的查询,不能是由若干查询由UNION连接起来的形式。
  4. 该子查询不能包含GROUP BY或者HAVING语句或者聚集函数。

对于不能转换semi-join的子查询:

  1. 对于不相关子查询,可以将其物化后再参与查询。
  2. 不管是相关子查询还是不相关子查询,都可以将IN子查询转换为EXISTS子查询。

Mysql不相关子查询的优化方式多为子查询转连接

子查询结果相当于一个派生表,对于派生表的处理,优先尝试把派生表和外层查询合并掉,如果不行的话,再把派生表物化掉执行查询。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL基于规则优化

本文链接: https://www.lsjlt.com/news/6145.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL基于规则优化
    条件化简:移除不必要括号、常熟传递、等值传递、移除无用条件、表达式计算、HAVING子句和WHERE子句合并、常量表检测 外连接消除:空值拒绝(外连接中通过where子句过滤NULL值),符合条件后,内外连接可以...
    99+
    2016-07-05
    MySQL基于规则优化
  • 基于mysql 默认排序规则的坑
    mysql默认varchar类型是对大小写不敏感(不区分),如果想要mysql区分大小写需要设置排序规则: utf8_bin将字符串中的每一个字符用二进制数据存储,区分大小写。 utf8_genera_ci不区分大小...
    99+
    2022-05-26
    mysql 默认排序规则
  • MySQL索引优化规则是什么
    这篇文章将为大家详细讲解有关MySQL索引优化规则是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。今天mysql教程栏目为大家介绍MySQL的索引优化规则。前言索引的...
    99+
    2022-10-18
  • 网页基本性能优化规则有哪些
    小编给大家分享一下网页基本性能优化规则有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!针对浏览器网页的一些优化规则页面优化静态资源压缩借助构建工具(webpa...
    99+
    2023-06-08
  • 基于ElasticSearch Analyzer的使用规则详解
    analyzer的使用规则 查询只能查找倒排索引表中真实存在的项, 所以保证文档在索引时与查询字符串在搜索时应用相同的分析过程非常重要,这样查询的项才能够匹配倒排索引中的项。 尽管是...
    99+
    2022-11-12
  • 基于MySQL 的 SQL 优化总结
    在数据库运维过程中,优化 SQL 是 DBA 团队的日常任务。例行 SQL 优化,不仅可以提高程序性能,还能减低线上故障的概率。 目前常用的 SQL 优化方式包括但不限于:业务层优化、SQL 逻辑优化、索引优化等。其中索...
    99+
    2017-06-28
    基于MySQL SQL 优化总结
  • 基于ElasticSearch Analyzer的使用规则是什么
    本文小编为大家详细介绍“基于ElasticSearch Analyzer的使用规则是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“基于ElasticSearch Analyzer的使用规则是什么”文章能帮助大家解决疑惑,下面跟着小编的...
    99+
    2023-06-05
  • oracle SQL优化规则有哪些
    这篇文章主要讲解了“oracle SQL优化规则有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“oracle SQL优化规则有哪些”吧! 1>选...
    99+
    2022-10-19
  • 基于Luhn算法的银行卡校验规则
    目录案例:该校验的过程:运行结果:银行卡校验规则(Luhn算法)卡号位数数量说明:案例: 当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个...
    99+
    2022-11-13
  • 基于Python代码实现Apriori 关联规则算法
    目录一、关联规则概述二、应用场景举例1、股票涨跌预测2、视频、音乐、图书等推荐3、打车路线预测(考虑时空)4、风控策略自动化挖掘三、3个最重要的概念1、支持度2、置信度3、提升度4、...
    99+
    2022-11-13
  • Mysql中基本语句优化的原则有哪些
    这篇文章给大家分享的是有关Mysql中基本语句优化的原则有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。mysql基本语句优化原则一、尽量避免在列上运算,这样会导致索引失效s...
    99+
    2022-10-18
  • 基于BFC规则如何实现的css两列布局
    这篇文章将为大家详细讲解有关基于BFC规则如何实现的css两列布局,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。   <!--利用BFC的overflowhidd...
    99+
    2022-10-19
  • 基于Ant路径匹配规则AntPathMatcher的注意事项
    目录AntPathMatcher前言基本规则注意事项测试用例spring url匹配工具类----AntPathMatcher具体使用场景请求body的二次写入AntPathMatc...
    99+
    2022-11-12
  • MySQL中索引基础知识及使用规则
    目录 一.InnoDB索引 二.B+树 三.聚集索引和辅助索引 四.索引实战 五.索引操作与规则 重建索引 索引覆盖 最左前缀原则 索引下推 用索引和用索引快速定位却别 六.普通索引和唯一索引如何选择 前提 普通索引和唯一...
    99+
    2020-03-29
    MySQL中索引基础知识及使用规则
  • MySQL--索引优化原则
    索引优化原则 1、最左前缀匹配原则,联合索引,mysql会从做向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3...
    99+
    2022-10-18
  • 基于Python函数的作用域规则和闭包(详解)
    作用域规则 命名空间是从名称到对象的映射,Python中主要是通过字典实现的,主要有以下几个命名空间: 内置命名空间,包含一些内置函数和内置异常的名称,在Python解释器启动时创建,一直保存到解释器退出。...
    99+
    2022-06-04
    详解 函数 规则
  • 基于Luhn算法的银行卡校验规则是什么
    这篇文章主要介绍“基于Luhn算法的银行卡校验规则是什么”,在日常操作中,相信很多人在基于Luhn算法的银行卡校验规则是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”基于Luhn算法的银行卡校验规则是什么...
    99+
    2023-06-30
  • 《基于 Vue 组件库 的 Webpack5 配置》2.模块规则 module.rule
    配置 module.rules ,创建模块时,匹配请求的规则数组; 可参考 webpack5 指南-管理资源; vue 可参考上述配置; js 使用 webpack babel-loader; css 参考 webpack 加载 C...
    99+
    2023-08-30
    vue.js 前端 javascript
  • MySQL 数据类型及最优选取规则
    目录数据类型整型浮点型定点数字符型日期时间型字段类型的选取原则数据类型 日常开发中,最常使用到的 MySQL 中常用的数据类型有 : 整型, 浮点型, 定点数, 字符型, 时间日期类...
    99+
    2022-11-13
  • MySQL 数据类型及最优选取规则
    目录数据类型整型浮点型定点数字符型日期时间型字段类型的选取原则数据类型 日常开发中,最常使用到的 mysql 中常用的数据类型有 : 整型, 浮点型, 定点数, 字符型, 时间日期类型. 下面对其分别进行总结。 整型 ...
    99+
    2022-08-26
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作