刚刚我们说过了,生活中难免会有一些不如意,比如,我们用一个字符串类型的字段来作为主键,表面上,这太不如意了,然而,事实也证明这是有用的。问题也就出来了,当在查询语句中对该字段值加上单引号和不加查询耗时相差百倍!

我建立的测试表是这样子的:
代码如下 复制代码 CREATE TABLE `foo` (
`key` VARCHAR() NOT NULL,
`time` INT() NOT NULL,
PRIMARY KEY (`key`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 然后插入30多万条数据,然后执行下面的SQL语句:
代码如下 复制代码 SELECT *
FROM `foo`
WHERE `key` = 查询花费 0.1288 秒,大约花费这么久的时间,然后,给1293322797加上单引号:
代码如下 复制代码 SELECT *
FROM `foo`
WHERE `key` ='' 查询花费 0.0009 秒,基本上相差100倍!!!也就是说不加单引号MYSQL性能损失了100倍,很震撼的比例! 后来用EXPLAIN分别跑了一下上面两条语句,见下面两张图: no-single-quotes-300x97
没有单引号时 single-quotes-300x101
有单引号时 很明显,不使用单引号没有用上主索引,并进行了全表扫描,使用单引号就能使用上索引了。
后来我用大于分别进行了测试,返回的结果集相同,而他们的耗时和上面一样,用EXPLAIN测试,也和上面一样
代码如下 复制代码 SELECT *
FROM `foo`
WHERE `key` >
SELECT *
FROM `foo`
WHERE `key` >'' 就是这些,综上所述,我们在写SQL查询的时候还是不厌其烦的加上单引号吧,似乎那没有坏处。谢谢收看,接下来播放一条本台刚刚收到的消息:“我要下楼去买点汤圆,以庆贺冬至! 总结一下,在mysql中单引号是代表字符不需要还编辑了,如果不是字符还需要mysql进行一个类型判断操作所以自然就慢了。

mysql加单引号和不加单引号的性能比较的更多相关文章

  1. php的mysql语句里变量加不加单引号问题

    第一种[{$_GET['id']}加不加单引号都能正常执行没问题] $sql = "select * from `news` where `id` = {$_GET['id']}" ...

  2. python 字符串组成MySql 命令时,字符串含有单引号或者双引号导致出错解决办法

    引用自:https://blog.csdn.net/zhaoya_huangqing/article/details/48036839 一.在组成SQL语句并发送命令时完全按照Python中的样式去传 ...

  3. 教您如何在Word的mathtype加载项中修改章节号

    在MathType数学公式编辑器中,公式编号共有五部分内容:分别是章编号(Chapter Number).节编号(Section Number).公式编号(Equation Number).括号(En ...

  4. 用java开发微信公众号:测试公众号与本地测试环境搭建(一)

    本文为原创,原始地址为:http://www.cnblogs.com/fengzheng/p/5023678.html 俗话说,工欲善其事,必先利其器.要做微信公众号开发,两样东西不可少,那就是要有一 ...

  5. 微信公众号JSAPI支付-多公众号向同一商户号支付的问题解决

    一.背景 项目提供公众号商城集成,在公众号里进行商品的购买,并与多家公众号合作增加渠道流量. . 二.实现 有关微信公众号.商户号的开通与支付绑定不细说 从背景里可知,我们需要实现多个公众号购买向同一 ...

  6. linux的0号进程和1号进程

    linux的 0号进程 和 1 号进程 Linux下有3个特殊的进程,idle进程(PID = 0), init进程(PID = 1)和kthreadd(PID = 2) * idle进程由系统自动创 ...

  7. linux设备管理之主设备号与次设备号

    主设备号和次设备号 一个字符设备或者块设备都有一个主设备号和次设备号.主设备号和次设备号统称为设备号.主设备号用来表示一个特定的驱动程序.次设备号用来表示使用该驱动程序的其他设备.(主设备号和控制这类 ...

  8. 9月19号-9月21号丰宁坝上草原行 - 营销系统 - 京东内部论坛 - Powered by Discuz!

    9月19号-9月21号丰宁坝上草原行 - 营销系统 - 京东内部论坛 - Powered by Discuz! 9月19号-9月21号丰宁坝上草原行   [复制链接]

  9. 用root帐号切换其他帐号提示 su: warning: cannot change directory to /home/oracle: Permission denied

    用root帐号切换其他帐号提示: 出错原因: 基本上是根目录或者是/home/oracle目录权限的问题 解决办法: 更改根目录权限为755,并保证对应用户主目录的所属用户和所属组一致和用户名一致. ...

随机推荐

  1. javascript 分页组件

    自己写的一个简单的分页组件,主要功能还有实现都在JS中,html页面中只用增加一个放置生成分页的DIV,并给定容器的id. html结构如下: <ul class="paginatio ...

  2. webform简单控件

    表单元素: 文本类: text password textarea hidden text,password,textarea实现控件:textbox   textmode属性选择password或m ...

  3. c#入门笔记(2)控件

    1.控件是可以从工具栏直接拖动到窗体,具有确定功能的函数.大部分控件属于control类的派生类.通用属性name(名称),location(具体的位置),top,left(位置) 2.form窗体类 ...

  4. linux 下安装安装rz/sz命令

    一.软件安装 root 账号登陆后,依次执行以下命令: cd /tmp wget http://www.ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz http:/ ...

  5. mac 激活Ultra Edit16

    一.文本编辑器UltraEdit 参照Ultra Edit16.10 Mac 破解下载,或者官方下载 Ultra Edit16即可 printf of=/Applications/UltraEdit. ...

  6. C#连接数据库的新方法(通过web.config配置文件)

    分类: asp.net技术 2009-07-08 19:40 183人阅读 评论(0) 收藏 举报 方法一.   1.web.config中<configuration>下加入以下连接代码 ...

  7. 0020 Linux 文件操作命令

    1. 创建文件 touch 文件名 2. 删除文件 rm 文件名 3. 复制文件 cp 源文件 目录 4.剪切文件 mv 源文件 目标文件 5.重命名文件 mv 源文件名 新文件名 6.改变文件权限 ...

  8. linux驱动初探之杂项设备(控制两个GPIO口)

    关键字:linux驱动.杂项设备.GPIO 此驱动程序控制了外接的两个二极管,二极管是低电平有效. 上一篇博客中已经介绍了linux驱动程序的编写流程,这篇博客算是前一篇的提高篇,也是下一篇博客(JN ...

  9. python的类和对象——类成员番外篇

    学完了面向对象的三大特性,已经get了所有屌丝技能的我们也当一回文艺小青年,来看看类的成员和成员修饰符. 今天‘三’这个数字好亲和~~~类成员可以分为三类:字段.方法和属性 一.字段 首先我们来看看字 ...

  10. python中lambda函数

    1.lambda函数使用如下: lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右侧的是返回值 >>> g=lambda x,y:x*y>>> g(4 ...