MySql类型转换函数cast
这两天处理一个现网的MySQL慢查询工单,学到了一个好用的MySQL函数:cast。事情是这样的:
我们有两张表 t_user 和 t_rule 表,需要关联这两张表去查询,关联字段是 t_user 表的主键id,int型,和t_rule表的 v0字段,varchar(32)。
下面是未走索引的sql样例和explain:

可以看到由于没有进行类型转换,该条sql会先查询t_user表,然后再通过t_user表的主键id去连接 t_rule表,但由于关联字段类型不一样,所以没有走索引, 最终查询 t_rule表是 全表扫描。
下面我们看下优化后的sql样例和explain:

优化该sql主要有两点:
(1)加了个联合索引 idx_ptype_v01 (v0,ptype,v1)
(2)使用了cast函数对 t_user 表的id进行了类型转换,转换成了和v0字段一样的varchar类型,才能够走到索引。
总结,以上就是这个cast函数的使用方式之一,当然,解决这个慢sql还有很多方法,比如不连表查询,或者将v0字段改成int型等方法(这个方法慎用,因为对于强类型语言而言,数据库字段从varchar类型改为int型,意味着代码也要改)。
参考链接:
cast函数讲解:https://blog.csdn.net/qq_21101587/article/details/78642423
MySQL中隐式转换导致索引失效:https://www.cnblogs.com/guitu18/p/12113495.html
MySql类型转换函数cast的更多相关文章
- mysql类型转换函数convert与cast的用法
原文地址:https://blog.csdn.net/kouwoo/article/details/45535733 简单介绍下mysql数据库中用于类型转换的二个函数,convert与cast函数, ...
- mysql类型转换函数convert与cast的用法,及SQL server的区别
首先,convert函数 字符集转换 : CONVERT(xxx USING gb2312) 类型转换和SQL Server一样,不过类型参数上有不同: CAST(xxx AS 类型) ...
- MySQL数据类型转换函数CAST与CONVERT的用法
MySQL 的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值.两者具体的语法如下: 1.CAST(value as type) 就是CAST(xxx AS 类型) 2 ...
- mysql 的类型转换函数cast的用法
CAST(expr AS type), CONVERT(expr,type) , CONVERT(expr USING transcoding_name) CAST() ...
- mysql中函数cast使用
CAST函数语法规则是:Cast(字段名 as 转换的类型 ),其中类型可以为: CHAR[(N)] 字符型DATE 日期型DATETIME 日期和时间型DECIMAL float型SIGNED in ...
- MySQL类型转换 使用CAST将varchar转换成int类型排序
--使用CAST将varchar转换成int类型排序 select distinct(zone_id) from guild_rank_info order by CAST(zone_id as SI ...
- 【数据库】MySql常用函数梳理
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5866388.html MySql常用函数梳理: 1:数学函数 使用格式:一般用于插入.修改语句中,直接 函数( ...
- 28-2 类型转换函数Cast-Convet
------------------------类型转换函数------------------------ --cast(表达式 as 数据类型) --convert(数据类型,表达式) ' as ...
- mysql小数和类型转换函数
保留两位小数 SELECT ROUND( 123456789.3563898,2),TRUNCATE(123456789.3563898,2),FORMAT(123456789.3563898,2); ...
- mysql高级函数FIND_IN_SET,ENUM和SET,LOCATE,ELT,FIELD,INTERVAL,COUNT,CAST,NULLIF,ISNULL,IFNULL,IF,CONVERT,COALESCE
mysql高级函数FIND_IN_SET,ENUM和SET,LOCATE,ELT,FIELD,INTERVAL,COUNT,CAST,NULLIF,ISNULL,IFNULL,IF,CONVERT,C ...
随机推荐
- Windows wsl2安装Ubuntu
wsl(Windows Subsystem for Linux)即适用于Windows的Linux子系统,是一个实现在Windows 10 / 11上运行原生Linux的技术. wsl2 为其迭代版本 ...
- 构筑立体世界,AR Engine助力B站会员购打造沉浸式营销
随着购物场景的逐渐多元化,越来越多电商平台把线下购物体验搬到线上,运用AR技术,跨越空间距离,帮助用户在购买前"体验"商品,增强购买意愿. 哔哩哔哩会员购(后称会员购)是B站于20 ...
- 整理k8s————k8s prod相关[三]
前言 简单整理k8s prod. 正文 prod 有两种: 自主式prod 控制器管理的prod 在Kubernetes中,最小的管理元素不是一个个独立的容器,而是Pod,Pod是最小的,管理,创建, ...
- gitlib配置
第1步:下载Java并安装Java.一般来说下载jdk对应的版本就行. 第2步:配置Java环境变量,具体如下: 1. 新建:变量名:JAVA_HOME:变量值:C:\Program Files\Ja ...
- JavaSE--初识&&开发基础
JDK.JRE.JVM JDK:Java Development Kit java开发环境 JRE:Java Runtime Environment java运行时环境 JVM:JAVA Virtua ...
- css添加属性,让浏览器检查无法选中元素
1.表现 浏览器直接选中元素的时候,仅能直接选中整个body,想要找到具体元素,需要自己手动寻找,没太大实际作用,仅仅让不懂的人不能简简单单的直接定位元素然后修改里面的内容 pointer-event ...
- 【笔记】rocketMQ了解
记录rocketMQ 忘了从哪儿保存的图了 原图链接:https://www.jianshu.com/p/2838890f3284
- HL7消息结构
HL7消息用于在不同的医疗保健系统之间传输电子数据,每个消息发送相关特定事件(例如患者入院)的信息.HL7消息采用人类可读格式,本节介绍HL7消息的内容以及HL7消息的组织方式. HL7消息由一个或多 ...
- 推文科技:AI解决方案助力内容出海
2017年,推文科技成立,推出业内针对网络文学的AI系统,助推网文批量出海.2018年,阿里云上线海外可用区,推文科技开始与阿里云合作. 创业宣言 创业是一件用行动去实践相信的事情,也许有一天,我 ...
- 阿里云容器服务差异化 SLO 混部技术实践
简介:阿里巴巴在"差异化 SLO 混合部署"上已经有了多年的实践经验,目前已达到业界领先水平.所谓"差异化 SLO",就是将不同类型的工作负载混合运行在同一节 ...