美文网首页
MySQL的隐式转换

MySQL的隐式转换

作者: 后厂村村长 | 来源:发表于2021-09-21 19:33 被阅读0次

MySQL在什么情况下会产生隐式转换

当查询条件左右两侧类型不匹配的时候会发生隐式转换,可能导致查询无法使用索引。
下面分析两种隐式转换的情况:

EXPLAIN select * from user where uid   = '2'
EXPLAIN select * from user where uid   = 2

如果数据库的uid字段是char或varchar,查询条件为数字类型,这时就会发生隐式转换:

不过,这时并没有太大影响,因为int类型的数字2只能转化为'2',是唯一确定的。所以虽然有隐式转换,但不影响使用索引,不会导致慢查询。

所以说上面的例子中,两种情况都可以用到索引,也就是说,可以为所有的数字都加上引号,不会因为无法命中索引,导致慢查询。

负面的隐式转换

如果反过来,上面的例子中,uid 在数据库中不是字符串类型,而是数字类型,这时,执行语句:EXPLAIN select * from user where name= 2,就可能出现 全表查询 的慢查询情况。

因为等号两侧类型不一致,会产生隐式转换,虽然查询条件仅为字符串 '2',但能转化为数字 2 的情况却很多;

比如'2',' 2','2abc',都会被转化成 2,故MySQL无法使用索引只能进行全表扫描,导致了慢查询的产生。

相关文章

  • MySQL之隐式转换

    MySQL之隐式转换 inexplicit conversion 之前也总给业务优化SQL,隐式转换也非常常见,但...

  • mysql隐式转换

    mysql隐式转换 (版本 5.7) 表结构如下: 添加的几条数据 字段类型varchar, 查询条件为int和s...

  • mysql隐式转换

    隐式转化把字符串转为了double类型。 1.当字段是数值类型时,加引号或者不加引号都不影响索引的使用。 2.当字...

  • mysql隐式转换

    1.string vs number 值类型和字符串类型比较时,mysql将字符串类型转换为值类型。尽量避免类型的...

  • MySQL的隐式转换

    MySQL在什么情况下会产生隐式转换 当查询条件左右两侧类型不匹配的时候会发生隐式转换,可能导致查询无法使用索引。...

  • C++类型转换

    C++的类型转换分为隐式转换和显式转换 隐式转换举例: int i=4; double d=i;//隐式转换 显式...

  • scala-隐式机制及Akka

    隐式机制及Akka 隐式转换 隐式转换和隐式参数时Scala中两个非常强大的功能,利用隐式转换和隐式参数,可以提供...

  • Scala基础——隐式转换

    隐式转换 Scala的隐式转换,其实最核心的就是定义隐式转换函数,即implicitconversion func...

  • 【Scala】Scala 隐式转换 implicit

    本篇结构: 前言 隐式转换类型 隐式转换的规则 -- 如何寻找隐式转换方法 参考博文 一、Implicit 简介 ...

  • MySQL隐式数据转换

    引出 考虑如下问题:假设我们在MySQL中存在表test,结构如下: 则我们写出如下SQL: 问:此时这两条SQL...

网友评论

      本文标题:MySQL的隐式转换

      本文链接:https://www.haomeiwen.com/subject/vzkigltx.html