问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

mysql 优化器有哪些可选开关

发布网友 发布时间:2022-04-23 14:51

我来回答

3个回答

懂视网 时间:2022-05-02 12:02

,提高查询效率。

三 相关参数
    我们可以通过参数 optimizer_switch 的标记来控制是否使用MRR,当设置mrr=on时,表示启用MRR优化。mrr_cost_based 表示是否通过 cost base的方式来启用MRR.如果选择mrr=on,mrr_cost_based=off,则表示总是开启MRR优化。
    参数read_rnd_buffer_size 用来控制键值缓冲区的大小。
    
四  案例介绍
当开启MRR时

  1. MySQL > explain select * from tbl where tbl.key1 between 1000 and 2000;
  2. +----+-------------+-------+-------+---------------+------+---------+------+------+-------------------------------------------+
  3. | id | select_type | table | type  | possible_keys | key  | key_len | ref  | rows | Extra                                     |
  4. +----+-------------+-------+-------+---------------+------+---------+------+------+-------------------------------------------+
  5. | 1  | SIMPLE      | tbl   | range | key1          | key1 | 5       | NULL | 960  | Using index condition; Using MRR          |
  6. +----+-------------+-------+-------+---------------+------+---------+------+------+-------------------------------------------+
  7. 1 row in set (0.03 sec)
五 MRR的使用限
   MRR 适用于以下两种情况。
   1 range access
   2 ref and eq_ref access, when they are using Batched Key Access

六  参考文章 
 《MariaDB Multi-Range Read Optimization》
 《MySQL Multi-Range Read Optimization》
 《Multi Range Read (MRR) in MySQL 5.6 and MariaDB 5.5》 

0926mysql中MRR的用法

标签:optimizer   mysq   不同   div   排序   优化   结果   cost   when   

热心网友 时间:2022-05-02 09:10

在开始演示之前,我们先介绍下两个概念。


概念一,数据的可选择性基数,也就是常说的cardinality值。


查询优化器在生成各种执行计划之前,得先从统计信息中取得相关数据,这样才能估算每步操作所涉及到的记录数,而这个相关数据就是cardinality。简单来说,就是每个值在每个字段中的唯一值分布状态。


比如表t1有100行记录,其中一列为f1。f1中唯一值的个数可以是100个,也可以是1个,当然也可以是1到100之间的任何一个数字。这里唯一值越的多少,就是这个列的可选择基数。


那看到这里我们就明白了,为什么要在基数高的字段上建立索引,而基数低的的字段建立索引反而没有全表扫描来的快。当然这个只是一方面,至于更深入的探讨就不在我这篇探讨的范围了。


概念二,关于HINT的使用。


这里我来说下HINT是什么,在什么时候用。


HINT简单来说就是在某些特定的场景下人工协助MySQL优化器的工作,使她生成最优的执行计划。一般来说,优化器的执行计划都是最优化的,不过在某些特定场景下,执行计划可能不是最优化。


比如:表t1经过大量的频繁更新操作,(UPDATE,DELETE,INSERT),cardinality已经很不准确了,这时候刚好执行了一条SQL,那么有可能这条SQL的执行计划就不是最优的。为什么说有可能呢?


来看下具体演示


譬如,以下两条SQL,

热心网友 时间:2022-05-02 10:28

  1. mrr
  2. batched_key_access
  3. block_nested_loop
  4. index_condition_pushdown
  5. use_index_extensions
  6. semijoin
  mysql> select b.class_name from class as b, student as a where a.class_id = b.id; +------------+ | class_name | +------------+ | xinxi | | xinxi | +------------+ 2 rows in set (0.00 sec)
  7. firstmatch
  8. loosescan
  9. materialization
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怀孕甲状腺激素偏高正常吗 怀孕检查甲状腺素偏高是什么原因引起的 怀孕了甲状腺功能偏高是怎么回事 怀孕甲状腺高是什么引起的 孕中期促甲状腺激素偏高是什么原因 重钢别墅靠谱吗 重刚别墅的致命缺点 重钢别墅的优点和缺点各是什么 积食可以吃什么 车子换了点火线圈,分缸线,火花塞以后车子打不着。这是什么原因 Mysql触发器 mysql 优化包括哪些内容? 如何修改mysql中key mysql> desc stu ;name在key字段出现MUL,这个MUL是什么意思?索引和主键名称都会出现在Key字段里吗? mysql中 MUL是什么意思? MySQL Key值(PRI, UNI, MUL)怎样设置? mysql中key是MUL是什么意思 怎样做蔬菜汁做饺子皮 包蔬菜汁的水饺怎样做 蔬菜汁饺子的做法,彩色蔬菜汁饺子怎么做好 翡翠白菜水饺(菠菜汁面团的经验)怎么做 怎么做菠菜汁水饺? 菠菜汁水饺怎么做? 菠菜汁水饺的做法步骤图,菠菜汁水饺怎么做 PC端如何打开优酷手机版网站? 优酷视频用手机能下载吗?怎么下载? 手机优酷APP怎么下载? 优酷手机播放器有官方下载么? 如何在电脑上同时登陆两个 电脑怎么登陆双 mysql默认排序问题 mysql 触发器如何优化速度 面试中常问:mysql数据库做哪些优化也提高mysql性能 求高手优化MySQL数据库,数据库反应太慢。 mysql 引用默认值的sql语句怎么写 mysql hint是什么意思 mysql 如何设置一个属性不能被修改呢 求一个免费PDF转换器,支持100M的文件。 畅连通话只有华为荣耀能用吗? 点痣后可以吃快餐中的土豆炒肉或豆角炒肉吗 刚刚点完痣可以吃甜的么?绿豆粥可以吃么?南瓜呢?要过多少天才可以在菜里面放点酱油?可以吃什么水果? 点痦子后可以吃角瓜吗? 激光去痣七天后能不能吃黑米粥 激光点痣后不能吃发物?发物指的是什么?我点了痣三天了,昨天还吃了土豆和大葱 点痣后可以吃娃娃菜豆腐汤吗? 刚点完痣能吃烤鸡腿吗 点痣后可以吃鸡蛋吗 点痣能吃鸡螃蟹吗 点痣生抽可以吃吗 关于西南医院去痣 去痣后第几天可以吃维生素c和维生素e怎么吃