MySQL之查询优化器的提示

【MySQL】MySQL 查询优化器的提示(hint) 1.概述 如果对优化器选择的执行计划不满意,可以使用优化器提供的几个提示(hint) 来控制最终的执行计划。下面将列举–些常见的提示,并简单地给出什么时候使用该提示。通过在查询中加入相应的提示,就可以控制该查询的执行计划。关于每个提示的具体用法, 建议直接阅读MySQL官方手册。有些提示和版本有直接关系。可以使用的- 些提示如下: 1.1 HIGH PRIORITY和LOW_ PRIORITY 这个提示告诉MySQL,当多个语句同时访问某- 个表的时候,哪些语句的优先级相对高些、哪些语句的优先级相对低些。. 阅读详情

如果对MySQL选择的执行计划不满意,可以使用优化器的几个提示(hint)来控制最终的执行计划。

HIGN_PRIORITY和LOW_PRIORITY

  • 这个提示告诉MySQL,当多个语句访问同一个表的时候,那些语句的优先级相对高些,那些语句的优先级相对低些。
  • HIGN_PRIORITY用于SElECT语句的时候,MySQL会将其重新调度到其他正在等待表锁以便修改数据的语句前面。实际上是将其放在表的队列的最前面。用于INSERT语句的时候,其效果只是简单的抵消了全局LOW_PRIORITY设置对该语句的影响。
  • LOW_PRIORITY提示用作SELECT、 INSERT、UPDATE、DELETE语句。和HIGH_PRIORITY正好相反,它会让语句一直处于等待状态,只要队列中还有需要访问同一个表的语句。
  • 这两个提示只是简单地控制了MySQL访问某个数据表的队列顺序。
  • 这两个提示只对使用表锁的存储引擎有效。

DELAYED

这个提示对INSERT和REPLACE有效。MySQL会将使用该提示的语句立即返回给客户端,并将插入的数据放入到缓存区,然后在表空闲的时候批量将数据写入。适用于日志系统,或者是需要写入大量数据但是客户端却不需要等待单条语句完成I/O的应用。
这个用法的限制是:并不是所有的存储引擎都支持这样的做法;并且该提示会导致LAST_INSERT_ID()无法正常工作。

STRAIGHT_JOIN

  • 可以放置在SELECT关键字之后或者任何两个联表的名字之间。第一个用法是让查询中所有的表按照在语句中出现的顺序进行关联。第二个用法是固定其前后两个表的关联顺序。
  • 适用于当MySQL没能选择正确的关联顺序的时候,或者由于可能的顺序太多导致MySQL无法正确评估所有的关联顺序的时候(MySQL可能会花大量时间在”statistics“状态,加上这个提示则会大大减少优化器的搜索空间)。

SQL_SMALL_RESULT和SQL_BIG_RESULT

  • 这两个提示只对SELECT语句有效。它们告诉优化器对GROUP BY或者DISTINCT查询如何使用临时表及排序。SQL_SMALL_RESULT表示结果集很小,可以将结果集放到内存中的索引临时表,以避免排序操作。如果是SQL_BIG_RESULT,则表示结果集很大,建议使用磁盘临时表做排序操作。

SQL_BUFFER_RESULT

这个提示告诉优化器将查询结果放入到一个临时表,然后尽可能快地释放表锁。

SQL_CACHE和SQL_NO_CACHE

这个提示告诉MySQL这个结果集是否应该缓存在查询缓存中。

SQL_CALC_FOUND_ROWS

它会让MySQL返回的结果集中包含更多的信息。查询中加上该提示会计算去除LIMIT子句后这个查询要返回的结果集,而实际上只返回LIMIT要求的结果集。不建议使用。

FOR UPDATE和LOCK IN SHARE MODE

  • 这两个提示主要控制SELECT语句的锁机制,但只对实现了行级锁的存储引擎有效。使用该提示会对符合查询条件的数据行加锁。使用INSERT…SELECT是不需要这两个提示的,因为MySQL会默认给这些记录加上读锁。
  • 唯一内置支持这两个提示的引擎就是InnoDB。这两个提示会让某些优化无法正常使用,例如索引覆盖扫描。InnoDB无法在不访问主键的情况下排他地锁定行,因为行的版本信息保存在主键中。
  • 应该尽量地避免使用这两个提示,它们很容易造成锁争用的问题。

USE INDEX、IGNORE INDEX和FORCE INDEX

  • 这几个提示会告诉优化器使用或不使用那些索引来查询记录。可以通过新增选项FOR ORDER BY和FOR GROUP BY来指定是否对排序和分组有效。
  • FORCE INDEX和USE INDEX的唯一区别是:FORCE INDEX会告诉优化器全表扫描的 成本远远高于索引扫描,哪怕实际上改索引用处不大。

optimizer_search_depth

这个参数控制优化器在穷举执行计划时的限度。如果查询长时间处于”Statistics“状态,可以考虑调低此参数。

optimizer_prune_level

该参数默认是打开的,这让优化器根据需要扫描的行数来决定是否跳过某些执行计划。

optimizer_switch

包含了一下开启/关闭优化器特性的标志位。例如,可以通过这个参数来控制是否禁用索引合并的特性。


参考:<高性能MySQL>

CST仿真微带贴片天线学习笔记 谐振频率为3.48GHz,基板采用Rogers RT5880板材,介电常数2.2,损耗角正切0.0009,厚度1.57mm,馈电方式为同轴馈电。 阅读详情

相关推荐

关于【中孚计算机终端保密检查系统】的卸载

卸载中孚计算机终端保密检查系统

码农之路,向死而生 4万+

mysql查询优化器提示( hint )

查询优化器提示( hint ) : 一般指改变 mysql 优化器的执行计划, 除非业务需要, 不建议这样做。 查询优化器提示( hint ) 1. HIGH_PRIORITY 、 LOW_PRIORITY HIGH_PRIORITY: 提示mysql该语句优先执行 LOW_PRIORITY: 提示mysql该语句处于等待执行, 有可能出现一...

xinyuan的专栏 5349

CANoe信号传输故障排查指南

本文提供了全面的CANoe信号传输故障排查指南,涵盖从硬件连接、通道配置到软件脚本与数据库加载的全链路诊断。针对常见的通道指示灯不亮、信号无法发送及ECU握手失败等问题,给出了基于CANoe工具和CAPL脚本的详细排查步骤与解决方案,帮助工程师系统化定位并解决实车测试中的通信故障。

ice55的博客 257

MySQL开发04-MySQL优化器的提示功能

MySQL开发04-MySQL优化器的提示功能

日拱一卒的博客 961

Multisim仿真电路:(十二)MOS管缓启动电路设计与优化

本文详细介绍了基于Multisim的MOS管缓启动电路设计与优化方法。通过分析米勒平台效应,探讨RC参数选择、多级设计和有源电路等技巧,有效抑制冲击电流并优化开关损耗。文章结合仿真实例,提供实用的设计策略和实际应用注意事项,帮助工程师提升电源管理系统的可靠性。

pytorch8learner的博客 237

GD32F450以太网(2-2): PHY芯片IP101GR介绍

IP101是台湾省九阳电子公司生产制造的,符合IEEE 802.3/802.3u标准单端口快速以太网收发器100Mbps和10Mbps操作,它支持自动MDI/MDIX功能,简化网络安装和减少系统维护成本。支持Auto MDI/MDIX已内置4个49.9欧的精密电阻支持中断功能支持 MII/RMII 接口超低功耗

Zhichao_Zhang的博客 1万+

SQL高级优化--优化器提示

本文结合实际案例讲述MySQL的Comment Syntax(注释语法)中Optimizer Hints(优化器提示)的作用和用法,以及如何通过有话题时期对SQL进行优化。绝对的干货文章哦!

我的博客 1510

Ansys Lumerical 启动时出现 Error: Could not connect to Ansys license server specified at 1055@ 的另一种解决办法

昨天在关闭了中之后 就能正常打开 FDTD 了,结果今天想开启出现了同样的报错:我猜测昨天能启动的原因在于关闭之后要重启电脑,并且在重启之后我第一时间打开 lumerical 测试因此端口没有被占用,今天是在电脑启动之后一段时间才打开所以又遇到了端口占用的问题。

qq_51404184的博客 9549

mysql 优化器提示_mysql查询优化器的提示(hit)

如果对优化器选择的执行计划不满意,可以使用优化器提供的几个提示来控制最终的执行计划,关于每个提示的具体用法,建议直接阅读官方手册,一些提示和版本有直接关系,可以使用的一些提示如下:high_priority和low_priority:这个提示告诉mysql,当多个语句同时访问某一个表的时候,哪些语句的优先级相对高一些,哪些语句的优先级相对低一些。high_priority用于select语句的时候...

weixin_34910865的博客 274

手把手教你学Simulink——基于电机驱动系统的场景实例:永磁同步电机(PMSM)在电动汽车中的矢量控制仿真

随着全球对环境保护的关注增加,电动汽车(Electric Vehicle, EV)因其环保特性而受到广泛关注。永磁同步电机(Permanent Magnet Synchronous Motor, PMSM)由于其高效率、高功率密度和良好的动态响应性能,在电动汽车驱动系统中得到了广泛应用。矢量控制(Field-Oriented Control, FOC)是实现PMSM高性能控制的关键技术之一,它能够实现对电机转矩和磁场的独立控制,从而达到类似直流电机的控制效果。本文将详细介绍如何使用来构建一个。

MHD0815的博客 1万+

12、控件使用之录入英文、阿拉伯数字删除增加功能及二维码显示

控件使用之录入英文、阿拉伯数字删除增加功能及二维码显示1、用到的控件2、添加控件2.1、添加【文本录入】控件2.1、添加【文本显示】控件2.1、添加【QR 二维码】控件3、保存工程及生成文件4、下载文件 1、用到的控件   需要用的显示控件为【文本显示】控件和【QR二维码】控件,以及触控控件【文本录入】控件。 2、添加控件 2.1、添加【文本录入】控件   【文本录入】控件也叫【ASCI 文本录入】,是用来录入ASCI 字符,打开 DGUS 软件,点击【触控控件】—【文本录入】,用鼠标框选一个区域,即可在右

嵌入式羊圈 625

【MySQL精通之路】查询优化器的使用(8)-优化器提示

优化器提示适用于不同的作用域级别:全局:提示影响整个语句查询块:提示影响语句中的特定查询块表级别:提示影响查询块中的特定表索引级别:提示影响表中的特定索引下表总结了可用的优化器提示、它们影响的优化器策略以及它们应用的范围。更多细节将在后面给出。

Anakki的博客 1191

uni-app开发-第3篇:uni-app 页面与路由

本文详细介绍了 uni-app 中的页面开发与路由管理。首先,页面是应用的基础单元,创建页面时需在pages目录下新建文件夹和.vue文件,页面结构由<template>、<script>和<style>三部分组成。uni-app 页面生命周期函数包括onShow、onReady、onHide和onUnload,分别用于处理页面显示、渲染完成、隐藏和卸载时的逻辑。其次,路由管理通过pages.json文件配置页面路径和样式,并提供uni.navigateTo等方法进行路由

无 415

mysql 优化器提示_mysql查询优化器提示( hint )

查询优化器提示( hint ) : 一般指改变 mysql 优化器的执行计划, 除非业务需要, 不建议这样做。查询优化器提示( hint )1. HIGH_PRIORITY 、 LOW_PRIORITYHIGH_PRIORITY: 提示mysql该语句优先执行LOW_PRIORITY: 提示mysql该语句处于等待执行, 有可能出现一直等待状态这两个提示针对表级锁有用, 不要使用在Inno...

weixin_42364539的博客 868

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

mysql 优化器提示_mysql查询优化之三:查询优化器提示(hint)

目录:《MySQL中的两种临时表》--强制使用临时表 SQL_BUFFER_RESULT《MySQL锁之三:MySQL的共享锁与排它锁编码演示》 --for update 和 lock in share mode《mysql实战优化之九:MySQL查询缓存总结》--关闭查询缓冲 SQL_NO_CACHE /强制查询缓冲 SQL_CACHE上文我们有提及到优化器的一些相关信息,如优化器的一些优化特...

weixin_35569158的博客 366

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

mysql查询优化器提示(hint)

在MySQL中,当我们提交SQL查询时,查询优化器默认选择一些索引来获得最佳的查询计划,有时可能不是最好的,但是可通过使用名为USE INDEX的索引提示来推荐查询优化器应该使用的索引。 一起看下MySQL USE INDEX提示的语法: SELECT select_list FROM table_name USE INDEX(index_list) WHERE condition; 这个语法的...

gg0124的博客 390

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

mysql中的优化器_mysql查询优化器提示(hint)

在MySQL中,当我们提交SQL查询时,查询优化器默认选择一些索引来获得最佳的查询计划,有时可能不是最好的,但是可通过使用名为USE INDEX的索引提示来推荐查询优化器应该使用的索引。一起看下MySQL USE INDEX提示的语法:SELECT select_list FROM table_name USE INDEX(index_list) WHERE condition;这个语法的作用是,...

weixin_34081203的博客 229

hint mysql_mysql查询优化器提示(hint)

在MySQL中,当我们提交SQL查询时,查询优化器默认选择一些索引来获得最佳的查询计划,有时可能不是最好的,但是可通过使用名为USE INDEX的索引提示来推荐查询优化器应该使用的索引。一起看下MySQL USE INDEX提示的语法:SELECT select_listFROM table_name USE INDEX(index_list)WHERE condition;这个语法的作用是,US...

weixin_39938746的博客 275

mysql查询优化之三:查询优化器提示(hint)

目录: 《MySQL中的两种临时表》--强制使用临时表 SQL_BUFFER_RESULT 《MySQL 多表关联更新及删除》 《mysql查询优化之三:查询优化器提示(hint)》 《MySQL锁之三:MySQL的共享锁与排它锁编码演示》 --for update 和 lock in share mode 《mysql实战优化之九:MySQL查询缓存总结》--关闭查询缓冲 SQL_...

weixin_30788731的博客 673

mysql highpriority_mysql查询优化之三:查询优化器提示(hint)

目录:《MySQL中的两种临时表》--强制使用临时表 SQL_BUFFER_RESULT《MySQL锁之三:MySQL的共享锁与排它锁编码演示》 --for update 和 lock in share mode《mysql实战优化之九:MySQL查询缓存总结》--关闭查询缓冲 SQL_NO_CACHE /强制查询缓冲 SQL_CACHE上文我们有提及到优化器的一些相关信息,如优化器的一些优化特...

weixin_30691643的博客 358

MySQL优化三:查询性能优化之查询优化器的局限性与提示

MySQL的万能嵌套循环并不是对每种查询都是最优的。不过MySQL查询优化器只对少部分查询不适用,而且我们往往可以通过改写查询让MySQL高效的完成工作。 1 关联子查询 MySQL的子查询实现的非常糟糕。最糟糕的一类查询时where条件中包含in()的子查询语句。因为MySQL对in()列表中的选项有专门的优化策略,一般会认为MySQL会先执行子查询返回所有in()子句中查询的值。一般来说,...

yongqi_wang的博客 9621

mysql 优化器提示_Mysql查询优化器

Mysql查询优化器本文的目的主要是通过告诉大家,查询优化器为我们做了那些工作,我们怎么做,才能使查询优化器对我们的sql进行优化,以及启示我们sql语句怎么写,才能更有效率。那么到底mysql到底能进行哪些优化那,下面通过以下几个方面来探讨一下:1常量转化它能够对sql语句中的常量进行转化,比如下面的表达式:WHERE col1 = col2 AND col2 ='x';依据传递性:如果A=B ...

weixin_29643235的博客 108

mysql查询优化器的提示(hit)

  如果对优化器选择的执行计划不满意,可以使用优化器提供的几个提示来控制最终的执行计划,关于每个提示的具体用法,建议直接阅读官方手册,一些提示和版本有直接关系,可以使用的一些提示如下: high_priority和low_priority:   这个提示告诉mysql,当多个语句同时访问某一个表的时候,哪些语句的优先级相对高一些,哪些语句的优先级相对低一些。   high_priority用...

weixin_30551947的博客 357

MySQL 8.0 隐藏索引与查询优化器提示:从盲目删索引到安全降级,数据库变更的风险管控

MySQL 8.0 的隐藏索引为索引变更提供了安全的中间状态,实现了"先隐藏观察,再确认删除"的渐进式降级流程。配合索引使用率监控和优化器提示,可以在保障查询性能的前提下安全地清理废弃索引。落地建议:先用监控识别低使用率索引;隐藏后至少观察一个完整业务周期;通过配置层管理优化器提示而非硬编码;删除前确认主从的索引需求差异。

dicky_zhang3的博客 4779
上一篇: MySQL之use index()查询
下一篇: MySQL之优化特定类型的查询
菜鸟=大神
博客等级 码龄11年 5粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值