mysql常用的hint(原创)

2023-11-17

转自:http://linux.chinaunix.net/techdoc/database/2008/07/29/1021449.shtml

 

对于经常使用Oracle的朋友可能知道,oracle的hint功能种类很多,对于优化sql语句提供了很多方法。同样,在MySQL里,也有类似的hint功能。下面介绍一些常用的。
强制索引 FORCE INDEX 
SELECT * FROM TABLE1 FORCE INDEX (FIELD1) …
以上的SQL语句只使用建立在FIELD1上的索引,而不使用其它字段上的索引。
忽略索引 IGNORE INDEX 
SELECT * FROM TABLE1 IGNORE INDEX (FIELD1, FIELD2) …
在上面的SQL语句中,TABLE1表中FIELD1和FIELD2上的索引不被使用。 
关闭查询缓冲 SQL_NO_CACHE 
SELECT SQL_NO_CACHE field1, field2 FROM TABLE1;
有一些SQL语句需要实时地查询数据,或者并不经常使用(可能一天就执行一两次),这样就需要把缓冲关了,不管这条SQL语句是否被执行过,服务器都不会在缓冲区中查找,每次都会执行它。
强制查询缓冲 SQL_CACHE
SELECT SQL_CALHE * FROM TABLE1;
如果在my.ini中的query_cache_type设成2,这样只有在使用了SQL_CACHE后,才使用查询缓冲。

优先操作 HIGH_PRIORITY
HIGH_PRIORITY可以使用在select和insert操作中,让MYSQL知道,这个操作优先进行。
SELECT HIGH_PRIORITY * FROM TABLE1;
滞后操作 LOW_PRIORITY
LOW_PRIORITY可以使用在insert和update操作中,让mysql知道,这个操作滞后。
update LOW_PRIORITY table1 set field1= where field1= …
延时插入 INSERT DELAYED
INSERT DELAYED INTO table1 set field1= …
INSERT DELAYED INTO,是客户端提交数据给MySQL,MySQL返回OK状态给客户端。而这是并不是已经将数据插入表,而是存储在内存里面等待排队。当mysql有空余时,再插入。另一个重要的好处是,来自许多客户端的插入被集中在一起,并被编写入一个块。这比执行许多独立的插入要快很多。坏处是,不能返回自动递增的ID,以及系统崩溃时,MySQL还没有来得及插入数据的话,这些数据将会丢失。

强制连接顺序 STRAIGHT_JOIN
SELECT TABLE1.FIELD1, TABLE2.FIELD2 FROM TABLE1 STRAIGHT_JOIN TABLE2 WHERE …
由上面的SQL语句可知,通过STRAIGHT_JOIN强迫MySQL按TABLE1、TABLE2的顺序连接表。如果你认为按自己的顺序比MySQL推荐的顺序进行连接的效率高的话,就可以通过STRAIGHT_JOIN来确定连接顺序。
强制使用临时表 SQL_BUFFER_RESULT
SELECT SQL_BUFFER_RESULT * FROM TABLE1 WHERE … 
当我们查询的结果集中的数据比较多时,可以通过SQL_BUFFER_RESULT.选项强制将结果集放到临时表中,这样就可以很快地释放MySQL的表锁(这样其它的SQL语句就可以对这些记录进行查询了),并且可以长时间地为客户端提供大记录集。

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql常用的hint(原创) 的相关文章

  • SQL - 选择具有最大值的所有行

    我有这个 SQL 查询 SELECT id COUNT AS price FROM SELECT FROM rt WHERE somecondition AS st JOIN tt ON st id tt id GROUP BY id 现在
  • 尝试使用 PHP / Html 从注册表单将数据输入到 SQL 表中

    我尝试了很多不同的事情并进行了很多搜索但没有解决方案 我正在尝试使用 html 表单将数据提交到 sql 表 这是我的 register php 文件的代码 con mysqli connect localhost database nam
  • 在MySQL中永久设置auto_increment_offset

    我以 root 身份运行命令 set auto increment offset 2 但从其他连接上看不到效果 为什么不 它是全球性的 From http dev mysql com doc refman 5 1 en replicatio
  • Mysql 中的 MD5 和 Salt

    如何 解密 各种电商存储的密码添加 盐 我不是密码专家 所以 在过去 我使用过类似的东西 SELECT FROM mytable WHERE email email AND passwd MD5 pwd MySql MD5 函数只接受一个参
  • 从mysql数据库读取pdf文件

    我正在使用这个例子http www php mysql tutorial com wikis mysql tutorials uploading files to mysql database aspx http www php mysql
  • 为什么java字符串在MYSQL中不保存为UTF-8?

    message new String round id getBytes UTF 8 conn DriverManager getConnection jdbc mysql host db useUnicode true character
  • 使用存储过程并发访问MySQL数据库

    我有一个存储过程 它将读取然后增加数据库中的值 许多程序同时使用这个特定的过程 我担心并发问题 特别是读写器问题 有人可以建议我任何可能的解决方案吗 thanks 首先 正如另一篇文章中所述 使用 InnoDB 从 MySQL 5 5 开始
  • PHP 和 MySQLi 中没有选择数据库错误[重复]

    这个问题在这里已经有答案了 我必须从 MySQL 数据库中选择数据 我一直在寻找答案 但仍然没有找到 我正在学习W3School http www w3schools com php php mysql select asp 我的 MySQ
  • 我不小心锁定了 MySQL 的 root

    我在 OS X 上使用 MySQL 并使用删除了所有 root 用户DROP USER 然后我又添加了其中一些并做了GRANT ALL on to root localhost 然后在验证确实是的之后注销 我可以登录并执行一些特权操作 不幸
  • 在带有 OR 条件的 LEFT JOIN 中使用索引

    考虑以下查询 SELECT FROM table1 LEFT JOIN table2 ON table2 some primary key table1 some primary key LEFT JOIN table3 ON table3
  • 为什么在 MAC OSX 上编译简单的 mysql c 应用程序时不断收到未定义的符号?

    我正在使用 MACOS 并尝试编写一个 测试 mysql 应用程序 该应用程序仅测试与本地数据库的连接 include
  • 如何使用Conda安装MySQLdb?

    我已经阅读了有关如何安装 MySQLdb 的几种不同的解释 但我不确定哪种情况适用于我 因为我的错误消息不同 我的系统似乎找不到 MySQLdb 我安装了 pymysql 但我需要导入 MySQLdb 才能使用该库中的过程 感谢您的帮助 c
  • PHP/MySQL:检索邻接列表模型中的单个路径

    有没有什么有效的方法可以在不限制深度的情况下根据节点的ID检索邻接列表模型中的单个路径 就像如果我有一个名为 Banana 的节点的 ID 我可以获得以下路径 Food gt Fruits gt Banana 如果不可能的话也不是什么大问题
  • 数据太长,导致列错误(包含国家字符)

    我必须移植一些DBS变成独立的MySQL版本 5 0 18运行于Windows 7 64 位我遇到了一个困扰我的问题 如果我尝试将任何国家 Unicode 字符插入varchar我收到错误 ERROR 1406 22001 Data too
  • 使用 JOIN 和 UNION 合并不同表中的记录

    我需要创建一个查询来组合两个表中的数据 我认为可能是 JOIN 和 UNION 的组合 在此示例中 我需要列出状态处于活动状态的所有姓名 仅一次 并将他们的葡萄酒 苏打水 晚餐 甜点和水果偏好组合起来 按姓名排序 我不确定单独的 JOIN
  • 一次将多个值插入MySQL [重复]

    这个问题在这里已经有答案了 谁能解释一下为什么这个 PHP MySQL 不起作用 基本上我需要从表单中一次插入大量行 因此会有多个名称字段 多个短 中 长字段等 我收到此错误 Notice Undefined variable Short1
  • WHERE 子句或 ON 子句中的 INNER JOIN 条件?

    我今天输错了一个查询 但它仍然有效并给出了预期的结果 我的意思是运行这个查询 SELECT e id FROM employees e JOIN users u ON u email e email WHERE u id 139840 但我
  • MySQL 中如何使用继承?

    所以我正在读一本关于数据库设计原理的书 并读到了有关继承的章节 但我对如何在 MySQL 中将子类与其超类 连接 感到困惑 The table structure would for example look like this 那么我如何
  • 计算行数并仅获取表中的最后一行

    我有一张桌子叫employeexam其结构和数据是这样的 id course id employee id degree date 1 1 3 8 2013 01 14 2 2 4 15 2013 01 14 3 2 4 17 2013 0
  • 如何获取mysql中一条记录的大小

    如果表包含 TEXT 或 BLOB 类型的字段 如何获取 MySql 中记录的大小 是否可以使用sql语句获取记录或表的大小 要计算字符串或 blob 的大小 以字节为单位 请使用LENGTH YourColumn http dev mys

随机推荐

  • 微软北大联合提出换脸 AI 和脸部伪造检测器,演绎现实版「矛与盾」?

    2020 01 07 18 28 导语 一个致力于造假 一个专注于打假 雷锋网 AI 开发者按 近日 微软研究院与北京大学的研究小组共同提出了一种全新的 AI 换脸框架 FaceShifter 以及一种检测伪造人脸图像的方法 FaceX R
  • 渗透Metasploitable主机

    攻击机 kali 靶机 Metasploitable2 一个特制的ubuntu操作系统 设计初衷作为安全工具测试和演示常见漏洞攻击的环境 默认开放高危端口如21 22 23 445 6000等等 而且具有很多未打补丁的高危漏洞 Metasp
  • 直接告诉你EndNote怎么用!

    如何用 endnote 导入新文献做自己的文献数据库 如何修改导入以后的英文的具体内容 例如修改数据库中的作者姓名 发表时间 文章页码 种属名的斜体 如何给自己的文章插入文献 EndNote安装包下载 EndNoteX9 先下载micros
  • Verilog的奇技淫巧[更新中]

    1 Verilog常用的数据选择语句vect a b 或vect a b 转载自 MDY常用的数据选择语句Verilog明德扬论坛 Powered by Discuz vect为变量名字 a为起始位置 加号或者减号代表着升序或者降序 b是进
  • Python获取MP3文件的ID3标签信息

    在Python中 你可以使用第三方库来获取MP3文件的ID3标签信息 ID3标签是嵌入在MP3文件中的元数据 它包含了有关音频文件的信息 如歌曲名称 艺术家 专辑 年份等 一种常用的Python库是mutagen 它提供了一个简单而强大的接
  • 如何用matlab计算自相关,Matlab计算自相关和互相关

    1 x t sinc 10t y t rect 10t 利用Matlab求 x t y t 的自相关函数及互相关函数 rect x abs s lt 0 5 定义rect 矩形脉冲 T 10 dt 0 001 t T 2 dt T 2 x
  • QT ToolBar上工具按钮隐藏

    之前再toolBar上添加工具时 用的QPushButton 然后再addWidget就可以了 但是当想要隐藏掉 调用hide和setVisible时 发现没反应 这块也没有细究 只寻找答案 解决办法 1 使用QToolButton和QAc
  • 学习笔记:运算放大器(OPA)超详细讲解(内含运用电路仿真)

    一运算放大器的简介 放大器 简称 运放 是具有很高放大倍数的电路单元 运算放大器是一个内含多级放大电路的电子集成电路 分别是输入级 中间级 发大级还有偏置电路 红色绿色蓝色分别是输入级 中间级和输出级 输入级采用具有很强零点漂移抑制能力的差
  • CSDN超级实习生计划——大厂实习直通车,年薪最高可达30W。2022正式开启~

    一 CSDN超级实习生计划是什么 2022届高校毕业生规模预计1076万人 同比增加167万人 这是高校毕业生规模首次超过千万 也是近几年增长人数最多的一年 1076万大学生就业的压力急剧暴增 也将迎来最难就业季 超级实习生计划是CSDN重
  • 一天1个机器学习知识点(一)

    陆陆续续整理的机器学习的知识点 资料大多数来自网上 不做盈利目的 如果侵权请告知即删 如果文章中有错误的地方还请各位同学指正 一起学习 一起进步 每天都在更新中 记得收藏 每天进步一点点 一天1个机器学习知识点 一 决策树 有无监督学习 S
  • ajax中的application/x-www-form-urlencoded中的使用

    一 HTTP上传的基本知识 在Form元素的语法中 EncType表明提交数据的格式 用 Enctype 属性指定将数据回发到服务器时浏览器使用的编码类型 下边是说明 application x www form urlencoded 窗体
  • MSP430 F5529的按钮控制led灯亮灭程序代码——按一下亮一下,再按一下暗

    2019 6 27 MP430F5529 电子工艺实习实验1 作业1 按下按键 LED亮 再按一次 LED灭 设置P8 1输出灯 P1 2输入按钮 P1 2下降沿 1 0 中断 中断标识为0 给按钮设置上拉电阻让其的高电位更加稳定 设置这两
  • 详解Java基础中注释添加的位置以及原则

    一 添加注释的位置 1 类 接口 这一部分注释是必须的 在这里 我们需要使用javadoc注释 需要标明 创建者 创建时间 版本 以及该类的作用 2 方法 在方法中 我们需要对入参 出参 以及返回值 均要标明 3 常量 对常量 我们需要使用
  • error LNK2005: _DllMain@12 already defined in MSVCRTD.lib

    本文主要分析和解决编译链接时产生的 LNK2005 错误 错误信息 mfcs90ud lib dllmodul obj error LNK2005 DllMain 12 already defined in MSVCRTD lib dllm
  • System.currentTimeMillis()

    System currentTimeMillis 计算方式与时间的单位转换 一 时间的单位转换 1秒 1000毫秒 ms 1毫秒 1 1 000秒 s 1秒 1 000 000 微秒 s 1微秒 1 1 000 000秒 s 1秒 1 00
  • Nginx 解决跨域

    项目准备 前端网站地址 http localhost 8080 服务端网址 http localhost 8081 确认服务端是没有处理跨域的 先用postman测试服务端接口是正常的 当前端网站8080去访问服务端接口时 就产生了跨域问题
  • 华硕笔记本开机自动进入bios,进不了windows系统的解决方法

    亲测有效解决办法 1 开机的时候长按F2键进入BIOS界面 通过方向键进 Secure 菜单 通过方向键选择 Secure Boot Control 选项 将其设定为 Disabled 2 通过方向键进入 Boot 菜单 通过方向键选择 L
  • ROS2执行source setup.bash命令报错及解决办法

    1 错误类型 在对ros2包编译通过后 在终端执行 source path to your workspace install setup bash 时报错 not found path to your workspace install
  • 快手直播怎么引流?快手直播效果怎么样?每个人对时尚的定义不同

    快手直播怎么引流 快手直播效果怎么样 每个人对时尚的定义不同 快手直播效果怎么样 每个人对时尚的定义不同 对于普通人来说 都会有对美的追求 比如找到适合自己的穿搭 适合自己的美妆 几乎每一种时尚风格在快手平台都能有被老铁认可的机会和其存在的
  • mysql常用的hint(原创)

    转自 http linux chinaunix net techdoc database 2008 07 29 1021449 shtml 对于经常使用Oracle的朋友可能知道 oracle的hint功能种类很多 对于优化sql语句提供了