隐式转换导致索引失效.这一点应当引起重视.也是开发中经常会犯的错误. 由于表的字段tu_mdn定义为varchar2(20),但在查询时把该字段作为number类型以where条件传给mysql,这样会导致索引失效. 错误的例子:select * from test where tu_mdn=13333333333; 正确的例子:select * from test where tu_mdn='13333333333';

看一下下面的案例,这个案例是开发过程中经常犯的一个错误,这种索引在大表的查询中是很致命的,直接能把数据库拖死:

mysql> show create table shipping\G;

*************************** 1. row ***************************

Table: shipping

Create Table: CREATE TABLE `shipping` (

`id` int(11) unsigned NOT NULL AUTO_INCREMENT,

`shipping_no` int(11) NOT NULL,

PRIMARY KEY (`id`),

UNIQUE KEY `shipping_no` (`shipping_no`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1

1 row in set (0.00 sec)

mysql> explain SELECT  shipping_no FROM `shipping`  WHERE  `shipping_no`  IN (62487941,62653594,62952180,63556576,63684186,99097538006,100433005006,100433006006);

+----+-------------+----------------------+-------+---------------+-------------+---------+------+------+-------------+

| id | select_type | table                | type  | possible_keys | key         | key_len | ref  | rows | Extra       |

+----+-------------+----------------------+-------+---------------+-------------+---------+------+------+-------------+

|  1 | SIMPLE      | shipping             | range | shipping_no   | shipping_no | 4       | NULL |    6 | Using where |

+----+-------------+----------------------+-------+---------------+-------------+---------+------+------+-------------+

1 row in set (0.00 sec)

mysql> explain SELECT  shipping_no  FROM `shipping`  WHERE  (`shipping_no`  IN ('62487941','62653594','62952180','63556576','63684186','99097538006','100433005006','100433006006'));

+----+-------------+----------------------+------+---------------+------+---------+------+----------+-------------+

| id | select_type | table                | type | possible_keys | key  | key_len | ref  | rows     | Extra       |

+----+-------------+----------------------+------+---------------+------+---------+------+----------+-------------+

|  1 | SIMPLE      | shipping             | ALL  | shipping_no   | NULL | NULL    | NULL | 12803696 | Using where |

+----+-------------+----------------------+------+---------------+------+---------+------+----------+-------------+

1 row in set (0.00 sec)

很蛋疼的东西,希望开发者在开发的时候注意字段不要越界,最主要的是不要使用隐形转换,有些是转换不了的,DBA的同行们注意这种隐形转换带来的危害,一定要给开发者提供规范。

本文转自 lover00751CTO博客,原文链接:http://blog.51cto.com/wangwei007/1369694,如需转载请自行联系原作者

mysql 索引越界_mysql隐式转换造成索引失效的事故总结相关推荐

  1. mysql隐式转换造成索引失效的事故总结

    隐式转换导致索引失效.这一点应当引起重视.也是开发中经常会犯的错误. 由于表的字段tu_mdn定义为varchar2(20),但在查询时把该字段作为number类型以where条件传给mysql,这样 ...

  2. mysql日期隐式转换_MySQL 隐式转换 | 剑花烟雨江南

    MySQL 隐式转换的规则如下: 1. 两个参数至少有一个是 NULL 时,比较的结果也是 NULL,例外是使用 <=> 对两个 NULL 做比较时会返回1,这两种都不需要做类型转换. 2 ...

  3. mysql数据库隐式表_详解MySQL数据库常见的索引问题:无索引,隐式转换,附实例说明...

    概述 在这些年的工作之中,由于SQL问题导致的数据库故障层出不穷,而索引问题是SQL问题中出现频率最高的,常见的索引问题包括:无索引,隐式转换. 索引问题 1.无索引 当数据库中出现访问表的SQL无索 ...

  4. MySQL 的隐式转换

    当我们对不同类型的值进行比较的时候,为了使得这些数值可比较(也可以称为类型的兼容性),MySQL 会做一些隐式转换(Implicit type conversion): 若字符串是以数字开头,并且全部 ...

  5. 如何找到隐式转换的SQL?

    隐式转换相关的文章, <从隐式转换案例,来挖掘开发人员的技能提升> <浅谈显式转换和隐式转换> <隐式转换的案例场景> 我们知道,隐式转换是在开发过程中非常容易进的 ...

  6. datetime 索引_MySQL 性能优化:MySQL 中的隐式转换造成的索引失效

    数据库优化是一个任重而道远的任务,想要做优化必须深入理解数据库的各种特性.在开发过程中我们经常会遇到一些原因很简单但造成的后果却很严重的疑难杂症,这类问题往往还不容易定位,排查费时费力最后发现是一个很 ...

  7. mysql字符串等于失效_MySql整型索引和字符串索引失效或隐式转换问题

    问题概述 写代码的时候,有一段sql,表示该sql存在隐式转换,不走索引. 经过测试排查后,发现是类型varchar的字段, 我使用条件传入了数值型的值. 问题重现 首先我们先创建一张用户表test_ ...

  8. mysql 隐式转换 索引_MySQL性能优化:MySQL中的隐式转换造成的索引失效

    数据库优化是一个任重而道远的任务,想要做优化必须深入理解数据库的各种特性.在开发过程中我们经常会遇到一些原因很简单但造成的后果却很严重的疑难杂症,这类问题往往还不容易定位,排查费时费力最后发现是一个很 ...

  9. mysql 隐式转换 索引_MySQL SQL优化之字符串索引隐式转换

    之前有用户很不解:SQL语句非常简单,就是select * from test_1 where user_id=1 这种类型,而且user_id上已经建立索引了,怎么还是查询很慢? test_1的表结 ...

最新文章

  1. mysql 触发器 实例_mysql的触发器-含案例-含效果 | 时刻需
  2. 手把手带你使用JS-SDK自定义微信分享效果
  3. 第八章 神经网络表示-机器学习老师板书-斯坦福吴恩达教授
  4. Google Chrome v48.0.2564.
  5. vue.js分页组件(新手学习记录)
  6. 如何在WINCE中添加WebServer组件
  7. 信息学奥赛一本通(1117:整数去重)
  8. python模板语言_3 个 Python语言 模板库比较
  9. 一文读懂FFT,海宁窗(hann)和汉明窗(hamming)的区别,如何选择窗函数
  10. 手撸CAPL(二)——OSEK网络管理N个节点建环机制(包含节点建环/丢失/跳过等)代码自取
  11. java的学习内容,附高频面试题合集
  12. word2016如何在将指定页设置为首页
  13. CCS6.1最后安装出现报错如下
  14. 抖音同款雪花飘落圣诞树
  15. Vmware安装win10报错:operating system not found
  16. 华为短信开发包开发联通sgip1.2接口协议报错
  17. codeception 运行testcase 的方式
  18. 祝福语html特效,2015年微信祝福语特效
  19. 【爬虫】牛客网简易爬虫(二)用Selenium看看你投过简历的公司这个月哪些有笔试+笔试时间
  20. 迅雷快速下载 Android SDK相关

热门文章

  1. 如何用shell脚本读取配置文件
  2. 深度学习(deep learning)优化调参细节(trick)
  3. Java并发编程:并发容器之ConcurrentHashMap(转载)
  4. 10个JavaScript常见BUG及修复方法 1
  5. C++类型转换运算符 static_cast,dynamic_cast,reinterpret_cast,const_cast
  6. Linux Namespace机制简介
  7. MySQL Innodb_flush_method
  8. WPF 播放Flash
  9. EasyUI权限(二星权限)
  10. C++的四种cast操作符的区别--类型转换