mysql构造函数_MySQL行构造器表达式优化(Row Constructor Expression)
mysql 官方文档行构造器表达式优化(Row Constructor Expression Optimization)这一节里面,对行构造表达式及其优化进行了介绍,因为用的不多,也没太关注过。但是看了几个示例,发现有一些逻辑还是与预想的不一样,下面详细介绍。
1. 行构造表达式示例
SELECT * FROM t1 WHERE (column1,column2) = (1,1);
其中 (column1,column2) 与 (1,1)就是行构造表达式。
(column1,column2) = (1,1) 这个表达式,在逻辑上,等同于:
column1 = 1 AND column2 = 1
这个也比较好理解,但是,如果把
(column1,column2) > (1,1) 理解为 column1 > 1 AND column2 > 1,那就错了。实际上应该是
column1 > 1 OR ((column1 = 1) AND (column2 > 1))
如果不相信的话,看下面这个案例:
mysql> select * from t_test;
+------+------+------+
| c1 | c2 | c3 |
+------+------+------+
| 1 | 1 | 1 |
| 1 | 1 | 0 |
| 1 | 2 | 2 |
| 1 | 2 | -1 |
+------+------+------+
4 rows in set (0.00 sec)
mysql> select * from t_test where c1=1 AND (c2,c3) > (1,1);
+------+------+------+
| c1 | c2 | c3 |
+------+------+------+
| 1 | 2 | 2 |
| 1 | 2 | -1 |
+------+------+------+
2 rows in set (0.00 sec)
mysql> select * from t_test where c1 = 1 AND (c2 > 1 OR ((c2 = 1) AND (c3 > 1)));
+------+------+------+
| c1 | c2 | c3 |
+------+------+------+
| 1 | 2 | 2 |
| 1 | 2 | -1 |
+------+------+------+
2 rows in set (0.00 sec)
(c2,c3) > (1,1),结果把c3为-1的记录也查出来了,是不是与期望有点落差,但事实就是这样。它的逻辑是先比较字段c2,如果c2 > 1,直接返回true,不再比较c3。如果c2=1,再比较字段c3。
2. 行构造表达式优化
关于行构造表达式的优化,主要还是转换成多个单独的条件表达式,由 or and 这类逻辑运算符连接,这样才能最大可能用上索引。
mysql构造函数_MySQL行构造器表达式优化(Row Constructor Expression)相关推荐
- 优化mysql数据库_MySQL数据库十大优化技巧
WEB开发者不光要解决程序的效率问题,对数据库的快速访问和相应也是一个大问题.希望本文能对大家掌握MySQL优化技巧有所帮助. 1. 优化你的MySQL查询缓存 在MySQL服务器上进行查询,可以启用 ...
- mysql行级锁 表级锁 页级锁详细介绍_MySQL行级锁、表级锁、页级锁详细介绍
页级:引擎 BDB. 表级:引擎 MyISAM , 理解为锁住整个表,可以同时读,写不行 行级:引擎 INNODB , 单独的一行记录加锁 表级,直接锁定整张表,在你锁定期间,其它进程无法对该表进行写 ...
- mysql推荐内存_mysql大内存高性能优化方案
mysql优化是一个相对来说比较重要的事情了,特别像对mysql读写比较多的网站就显得非常重要了,下面我们来介绍mysql大内存高性能优化方案 8G内存下MySQL的优化 按照下面的设置试试看: ke ...
- mysql解释器优化_MySQL——SQL性能分析优化利器之Explain
系统性能的优劣取决于我们sql的查询速度,MySQL Explain命令是分析SQL性能及优化不可缺少的一部分. Explain被我们称为解释器,通过 explain 我们可以知道以下信息:表的读取顺 ...
- mysql sql优化_MySQL数据库SQL语句优化原理专题(三)
需求 做过开发的同学,对分页肯定不会陌生,因为很多前台页面展示,为了更好的展示数据,就会用到分页,所以如何写一个高性能的分页SQL语句,是每一个开发人员需要掌握的技能. 分页SQL 这里给大家写一个分 ...
- mysql数据库的行级锁有几种_mysql锁之三种行级锁介绍
本文主要介绍 1.mysql三种行锁介绍 2.RR模式下,next-key lock为什么可以解决幻读问题 首先,创建一张表: mysql> show create table test01\G ...
- mysql锁优化_mysql锁以及配置优化
1. 看有没有锁等待 SHOW STATUS LIKE 'innodb_row_lock%'; 2. 查看哪个事务在等待(被阻塞了) USE information_schema SELECT * F ...
- mysql js 命令行登录_MYSQL常用命令
1.連接Mysql 格式: mysql -h主機地址 -u用戶名 -p用戶密碼 1.連接到本機上的MYSQL. 首先打開DOS窗口,然後進入目錄mysql\bin,再鍵入命令mysql -u root ...
- mysql locate不走索引_MySQL 索引——定位并优化慢 SQL
定位并优化慢查询SQL.png 为什么要学习定位并优化慢查询 SQL 日常开发中,在数据量比较小的表中,SQL 的执行效率可能没什么问题,但是随着表数据量的增加,慢 SQL 可能就会慢慢浮现,因此学习 ...
最新文章
- remote: HTTP Basic: Access denied
- 8.1 mnist_soft,TensorFlow构建回归模型
- MFC实现获取鼠标位置的小程序
- The template root requires exactly one element.
- BUU刷题记录——Misc(一)
- VMware扩展Tanzu产品系列与合作关系
- 利用sql_trace跟踪一个指定会话的操作
- ios中mvc的FormsAuthentication.SetAuthCookie(cookieUserName, false)失败
- XBAP 承载 Silverlight 的示例
- 一、全国计算机三级数据库考试——理论知识总结(选择题)
- 计算机管理软件禁止玩游戏,电脑有没有禁止玩网络游戏,但可以上网的软件?...
- 服务器光纤信号灯,光纤收发器的六个指示灯都代表什么?
- Linux terminal 终端快捷键汇总
- hovm什么意思_小火枪的微博 - 水晶球财经网
- Java版简易画图板的实现
- Flink窗口全解析:三种时间窗口、窗口处理函数使用及案例
- 基于springboot的小区社区物业管理系统
- TeamTalk客户端源码分析七
- python亚马逊运营工具_GitHub - WuLC/AmazonRobot: Amazon商品引流的 python 爬虫
- Android AES加密解密工具类
热门文章
- 风影ASP.NET基础教学 5 验证控件(二) 扩展自己的验证控件
- IDEA - 解决 Maven 初始化配置 web.xml 为 2.3 的问题
- 造成java.io.IOException: Stream Closed异常的代码
- 关于C#中async/await中的异常处理(上)
- R 报错:package ‘***’ is not available (for R version ****) 的解决方案
- 在Visual Studio代码中显示空白字符
- 如何在更大的div内使图像中心(垂直和水平)居中[重复]
- 如何导入给定名称的模块为字符串?
- 大数据的发展,伴随的将是软件工程师的渐退,算法工程师的崛起
- HDFS Namenode启动过程