这两天处理一个现网的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的更多相关文章

  1. mysql类型转换函数convert与cast的用法

    原文地址:https://blog.csdn.net/kouwoo/article/details/45535733 简单介绍下mysql数据库中用于类型转换的二个函数,convert与cast函数, ...

  2. mysql类型转换函数convert与cast的用法,及SQL server的区别

    首先,convert函数 字符集转换 :   CONVERT(xxx  USING   gb2312) 类型转换和SQL Server一样,不过类型参数上有不同: CAST(xxx  AS   类型) ...

  3. MySQL数据类型转换函数CAST与CONVERT的用法

    MySQL 的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值.两者具体的语法如下: 1.CAST(value as type) 就是CAST(xxx AS 类型) 2 ...

  4. mysql 的类型转换函数cast的用法

    CAST(expr   AS   type),   CONVERT(expr,type)   ,   CONVERT(expr   USING   transcoding_name) CAST()   ...

  5. mysql中函数cast使用

    CAST函数语法规则是:Cast(字段名 as 转换的类型 ),其中类型可以为: CHAR[(N)] 字符型DATE 日期型DATETIME 日期和时间型DECIMAL float型SIGNED in ...

  6. MySQL类型转换 使用CAST将varchar转换成int类型排序

    --使用CAST将varchar转换成int类型排序 select distinct(zone_id) from guild_rank_info order by CAST(zone_id as SI ...

  7. 【数据库】MySql常用函数梳理

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5866388.html MySql常用函数梳理: 1:数学函数 使用格式:一般用于插入.修改语句中,直接 函数( ...

  8. 28-2 类型转换函数Cast-Convet

    ------------------------类型转换函数------------------------ --cast(表达式 as 数据类型) --convert(数据类型,表达式) ' as ...

  9. mysql小数和类型转换函数

    保留两位小数 SELECT ROUND( 123456789.3563898,2),TRUNCATE(123456789.3563898,2),FORMAT(123456789.3563898,2); ...

  10. 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 ...

随机推荐

  1. 来自上个世纪的传奇 q_math.c 源码展示

    经典的快速平方根倒数算法就在其中 此算法首先接收一个32位带符浮点数,然后将之作为一个32位整数看待,将其右移一次(取半),并用十六进制"魔术数字"0x5f3759df减之,如此即 ...

  2. 【实变函数】四、Lebesgue积分

    [实变函数]4. Lebesgue积分 本文介绍Lebesgue积分的定义,并给出积分的一些常用性质.注意Lebesgue积分的定义是从非负函数向一般函数扩展的,这依托于一般函数的分解\(f(x)=f ...

  3. HarmonyOS位置服务开发指南

      位置服务开发概述 移动终端设备已经深入人们日常生活的方方面面,如查看所在城市的天气.新闻轶事.出行打车.旅行导航.运动记录.这些习以为常的活动,都离不开定位用户终端设备的位置. 当用户处于这些丰富 ...

  4. 报名直达丨HarmonyOS开发者创新大赛线下城市交流会来了,约吗?

    HarmonyOS开发者创新大赛线下城市交流会 正式开启啦! 在这里,将有专业的讲师 与HarmonyOS开发者们面对面演示开发实操.交流开发心得 还等什么?赶快扫码报名吧~↓↓↓ 城市交流会报名链接 ...

  5. Java使用ganymed工具包执行LINUX命令教程

    了解更多开发技巧,请访问,架构师小跟班官网:https://www.jiagou1216.compackage com.jiagou;import ch.ethz.ssh2.Connection;im ...

  6. 4款值得推荐的AI辅助编程工具(支持C#语言)

    前言 在这个AI迅速发展的阶段,涌现出了一大批好用的AI辅助编程工具.AI辅助编程工具能够提高开发效率.改善代码质量.降低bug率,是现代软件开发过程中的重要助手.今天大姚给大家分享4款AI辅助编程工 ...

  7. ECharts海量数据渲染解决卡顿的4种方式

    场景 周五进行需求评审的时候: 出现了一个图表,本身一个图表本没有什么稀奇的: 可是产品经理在图表的上的备注,让我觉得这个事情并不简单: 那个图表的时间跨度可以是月,年,而且时间间隔很短: 这让我意识 ...

  8. 阿里云云原生加速器企业硬之城携手阿里云 Serverless 应用引擎(SAE)打造低代码平台

    简介: 作为入选阿里云首期云原生加速器的企业,硬之城此前也获得了阿里云首批产品生态集成认证,通过云原生加速器项目携手阿里云共建更加丰富的云原生产业生态圈,加速云原生落地. 作者 | 陈泽涛(硬之城产品 ...

  9. StarRocks X Flink CDC,打造端到端实时链路

    简介: 作为一款全平台极速 MPP 架构,StarRocks 提供了多种性能优化手段与灵活的建模方式,在预聚合.宽表和星型/雪花等多种模型上,都可以获得极致的性能体验.通过 StarRocks 结合 ...

  10. [PHP] composer, PHP Fatal error: Allowed memory size of xx bytes exhausted

    终端执行 composer 命令时经常会遇到内存不够的情况. 视情况升级一下 composer,使用 composer self-update. 默认 php 的内存限制是 128M,临时取消 php ...