MySQL查询提示
MySQL查询提示:
1.LOW_PROPRITY,HIGHT_PRIORITY
作用:指定sql语句的运行优先级,会将加了HIGHT_PROPRITY提示的sql调度到表访问队列的最前面
限制:仅对表级别的锁的引擎有效(MyISAM引擎),对非表级别的引擎的锁无效,比如innodb引擎
用法:update test LOW_PROPRITY set name = 'abc' where id = 1
2.DELAYED
作用:对于Insert或者replace操作,将待写入的数据放入缓冲区,待表空闲的时候再做真正的插入
限制:存在丢失数据的风险,并非所有引擎都支持DELAYED 操作,mysql5.7似乎并不支持改操作符
用法:insert DELAYED into test values (1,'aaa')
3.straight_join 强制连接顺序
作用:强制连接顺序,指定表按照书写的顺序或者前后顺序来关联
限制:
用法:1.select * from t1 a straight_join t2 b on a.id= b.id1 固定t1表和t2 表的关联顺序,
2.select straight_join * from t1 a inner join t2 b on a.id= b.id1 inner join test c on b.id1 = c.id 让查询中所有的表按照书写顺序做关联
4.SQL_SMALL_RESULT 和 SQL_BIG_RESULT
作用:在处理DISTINCT或者GROUP BY的时候,提示优化器按照较小(内存空间)或者较大(磁盘临时控件)的方式来处理结果集
限制:仅对select 语句有效
用法:select SQL_SMALL_RESULT a.id, count(1) from t1 a straight_join t2 b on a.id= b.id1 group by a.id
5.SQL_BUFFER_RESULT
作用:将查询结果集放入临时表,尽快释放表锁
限制:
用法:select SQL_BUFFER_RESULT * from testbak
6. SQL_CACHE和SQL_NO_CACHE
作用:告诉查询引起是否将结果缓存在查询缓存中
限制:
用法:select SQL_NO_CACHE/*SQL_CACHE*/ * from testbak
7.SQL_CALC_FOUND_ROWS
作用:存在分页的情况下,提示在计算总行的时候忽略分页限制
限制:
用法:select SQL_CALC_FOUND_ROWS * from testbak LIMIT 100; --限制为100 页面
select FOUND_ROWS();--计算上述语句中不加LIMIT 100情况下的总行数
8.FOR UPDATE 和 LOCK IN SHARE MODE
作用:锁提示
限制:仅INNODB引起支持这两个提示
用法:select * from testbak where id = 8888 for update
表锁定:
lock table t1 read/write;
SELECT * FROM t1;
delete from t1;
unlock tables ;
9.USE INDEX,IGNORE INDEX,FORCE INDEX
作用:强制索引提示
用法:select count(1) from testbak USE index(idx_id) ;
select count(1) from testbak IGNORE index(idx_id) ;
select count(1) from testbak FORCE index(idx_id) ;
10. optimizer_search_depth
控制优化器在穷举执行计划时的限度,如果查询长时间处于Statistics状态,那么可以考虑调地次参数
optimizer_prune_level
默认打开,让优化器根据需要扫描的行数来决定是否跳过某些执行计划
optimizer_switch
包含开启/关闭优化器特性的标志位
前两个参数可以让优化器在生成执行计划的时候更加灵活,但是有可能错过一些最优化的执行计划,
比如优化器要花10秒钟找一个“最”优化的执行计划,
但是可以话3秒钟找一个“次”优化的执行计划,“次”优化的执行计划可以在2秒钟之内完成查询
这个查询一共花费了3+2=5秒
但是如果是花10秒钟找一个“最”优化的执行计划,最优化的执行计划需要0.5秒完成查询
这个查询一共花费了10+0.5+2=10.5秒,有点得不偿失
意思是不要为了找方法而花费的时间超过做事情本身的时间
MySQL查询提示的更多相关文章
- MySQL自成一派的查询提示
[查询提示] MySQL中可以给select语句各种提示,比如告诉它“查询的结果集特别大,请直接用磁盘临时表”,“请让这条select优先执行” .... [查询提示:与结果集相关] 与结果集相关的查 ...
- mysql查询缓存打开、设置、参数查询、性能变量意思
http://blog.sina.com.cn/s/blog_75ad10100101by7j.html http://www.cnblogs.com/zemliu/archive/2013/08/0 ...
- MySQL查询数据表中数据记录(包括多表查询)
MySQL查询数据表中数据记录(包括多表查询) 在MySQL中创建数据库的目的是为了使用其中的数据. 使用select查询语句可以从数据库中把数据查询出来. select语句的语法格式如下: sele ...
- mysql 查询导出(txt,csv,xls)
1 简介 工作中产品经常会临时找我导出一些数据,导出mysql查询结果数据有几种方法,下面介绍3种. ① mysql -u -p -e "sql" db > filep ...
- MySQL查询高速缓冲
对mysql的优化不在行,搞过几次优化,但是都不是很理想,还是浪费资源太多.一直发现我的mysql的缓存命中率极差,情况良好的时候到达过60-70%,但是运行时间一长,只有10-20%.查了一些资料, ...
- 连接mysql时提示java.sql.SQLException: Access denied for user 'root'@'DESKTOP-N2B2D9A' (using password: YES)
用root连接mysql时提示:访问被拒绝 检查一下mysql server是否开启,发现后台在运行着.. 然后查了一下mysql的用户表,发现root只能运行使用本地ip(localhost或者1 ...
- RDS for MySQL查询缓存 (Query Cache) 的设置和使用
https://help.aliyun.com/knowledge_detail/41717.html?spm=5176.7841698.2.11.aCvOXJ RDS for MySQL查询缓存 ( ...
- 操作MySQL出错提示“BLOB/TEXT column request_data in key specification without a key length”解决办法
错误原因: 查阅资料后才知道,原来Mysql数据库对于BLOB/TEXT这样类型的数据结构只能索引前N个字符.所以这样的数据类型不能作为主键,也不能是UNIQUE的.所以要换成VARCHAR,但是VA ...
- 【转】MySQL查询缓存详解
[转]MySQL查询缓存详解 转自:https://www.cnblogs.com/Alight/p/3981999.html 相关文章:http://www.zsythink.net/archive ...
随机推荐
- 第1章 计算机网络和协议(2)_OSI参考模型
2. OSI参考模型 2.1 OSI参考模型详解 (1)参考模型的优点 ①将网络的通信过程划分为小一些.功能简单的部件,有助于各个部件开发.设计和故障排除. ②通过网络组件的标准化,允许多个供应商进行 ...
- Keras.applications.models权重:存储路径及加载
网络中断原因导致keras加载vgg16等模型权重失败, 直接解决方法是:删掉下载文件,再重新下载 Windows-weights路径: C:\Users\你的用户名\.keras\models Li ...
- Spark操作实战
1. local模式 $SPARK_HOME/bin/spark-shell --master local import org.apache.log4j.{Level,Logger} // 导入ja ...
- Delphi7 中文汉字转网址格式 Utf8编码转换(淘宝搜索中文转网址)
function HttpEncode(S:AnsiString):string; var P:^Byte; I:Cardinal; begin Result:=''; P:=@S[1 ...
- ubuntu 16.04 静态ip的配置
nssa-sensor1@nssa-sensor1:~$ vim /etc/network/interfaces 以下是编辑文件的内容# interfaces(5) file used by ifup ...
- Java - 28 Java 泛型
Java 泛型 如果我们只写一个排序方法,就能够对整型数组.字符串数组甚至支持排序的任何类型的数组进行排序,这该多好啊. Java泛型方法和泛型类支持程序员使用一个方法指定一组相关方法,或者使用一个类 ...
- Linux性能优化 第六章 性能工具:磁盘I/O
6.1 磁盘I/O介绍 一般来说,Linux磁盘的每个分区要么包含一个文件系统,要么包含一个交换分区.这些分区被挂载到Linux根文件系统,该系统由/etc/fstab指定.这些被挂载的文件系统包含了 ...
- Android轮询器,RxJava Interval;
基于RxJava实现轮询器,配合Retrofit处理网络请求轮询很好用,其它的一些轮询也都可以使用像Bannre图之类的: implementation 'io.reactivex.rxjava2:r ...
- raid1与raid5
raid 1 就是两个磁盘同时读同时写, 当其中一个坏了 不影响使用, 直接更换一个,这样磁盘的容量只有一个盘的raid 5 就是 N-1个磁盘的容量,当其中任何一个磁盘坏,不影响使用,更换一个就可以 ...
- python利用socket写一个文件上传
1.先将一张图片拖入‘文件上传’的目录下,利用socket把这张图片写到叫‘yuan’的文件中 2.代码: #模拟服务端 import subprocess import os import sock ...