位置: 编程技术 - 正文
推荐整理分享MySQL数据库中把int转化varchar引发的慢查询(mysql中具体到删某一个数据),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:mysql数据放在哪里,mysql怎么把数据库导出来,mysql数据放在哪里,mysql数据库sid,mysql的数据,mysql的数据,mysql数据库内容,mysql数据库内容,内容如对您有帮助,希望把文章链接给更多的朋友!
最近一周接连处理了2个由于int向varchar转换无法使用索引,从而引发的慢查询。
从上面可以很明显的看到由于appkey是varchar,而在where条件中不加'',会引发全表查询,加了就可以用到索引,这扫描的行数可是天差地别,对于服务器的压力和响应时间自然也是天差地别的。
我们再看另外一个例子:
从上面的例子看,虽然poll_id的类型为bigint,但是SQL中添加了'',但是这个语句仍然用到了索引,虽然扫描行数也不少,但是能用到索引就是好SQL。
那么一个小小的''为什么会有这么大的影响呢?根本原因是因为MySQL在对文本类型和数字类型进行比较的时候会进行隐式的类型转换。
以下是5.5官方手册的说明:
根据以上的说明,当where条件之后的值的类型和表结构不一致的时候,MySQL会做隐式的类型转换,都将其转换为浮点数在比较。
对于第一种情况:
比如where string = 1;
需要将索引中的字符串转换成浮点数,但是由于'1',' 1','1a'都会比转化成1,故MySQL无法使用索引只能进行全表扫描,故造成了慢查询的产生。
同时需要注意一点,由于都会转换成浮点数进行比较,而浮点数只有bit,故当超过最大值的时候,比较会出现问题。
对于第二种情况:
由于索引建立在int的基础上,而将纯数字的字符串可以百分百转换成数字,故可以使用到索引,虽然也会进行一定的转换,消耗一定的资源,但是最终仍然使用了索引,不会产生慢查询。
以上所述是小编给大家介绍的MySQL数据库中把int转化varchar引发的慢查询 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对积木网网站的支持!
Mysql数据库中把varchar类型转化为int类型的方法 在上篇文章给大家讲了MySQL数据库中把int转化varchar引发的慢查询,本文给大家介绍Mysql数据库中把varchar类型转化为int类型的方法,一起看看吧!mysql为我
Mysql中varchar长度设置方法 如果某一项中设置的是varchar()那么对英文当然是那么对中文呢utf-8的中文占3个字节那么,这个varchar()是不是只能存个汉字了mysqlvarchar()不管中文还
MySQL动态修改varchar长度的方法 虽然这种情况不应该发生,通常像我们关系型数据库,我们应该是事先设计好,以后不能改动,但是由于之前工作的疏忽,其实说实话,也不仅仅是我
标签: mysql中具体到删某一个数据
本文链接地址:https://www.jiuchutong.com/biancheng/347896.html 转载请保留说明!上一篇:MySQL中把varchar类型转为date类型方法详解(mysql varchar类型)
下一篇:Mysql数据库中把varchar类型转化为int类型的方法(MySQL数据库中把表中的一个字段重命名)
友情链接: 武汉网站建设