• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > 一个单引号引发的MYSQL性能问题分析

一个单引号引发的MYSQL性能问题分析

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了MYSQL性能,单引号等相关知识,希望本文的分享对您有所帮助

刚刚我们说过了,生活中难免会有一些不如意,比如,我们用一个字符串类型的字段来作为主键,表面上,这太不如意了,然而,事实也证明这是有用的。

对于大型的系统而言,Oracle,SQLServer无疑是最好的选择,可看看现在越来越多的小网站,他们没有自己的服务器,只是买别人的空间和数据库,但这种小型的数据库在性能上当然和大型数据库没有对比性,但小型的数据库也要对自己的优化方式,今天和大家分享Mysql中加没加单引号的巨大区别,对于MYSQL性能优化很有意义。

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

测试表:
代码如下:
CREATE TABLE `foo` ( `key` varchar(10) NOT NULL, `time` int(11) NOT NULL, PRIMARY KEY (`key`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;

然后插入30多万条数据,然后执行下面的SQL语句:
代码如下:
SELECT *FROM `foo`WHERE `key` =1293322797

查询花费 0.1288 秒,大约花费这么久的时间,然后,给1293322797加上单引号:
代码如下:
SELECT *FROM `foo`WHERE `key` ='1293322797'

查询花费 0.0009 秒,基本上相差100倍!!!也就是说不加单引号MYSQL性能损失了100倍,很震撼的比例!

后来用EXPLAIN分别跑了一下上面两条语句,见下面两张图:


没有单引号时


有单引号时

很明显,不使用单引号没有用上主索引,并进行了全表扫描,使用单引号就能使用上索引了。
后来我用大于分别进行了测试,返回的结果集相同,而他们的耗时和上面一样,用EXPLAIN测试,也和上面一样
代码如下:
SELECT *FROM `foo`WHERE `key` >1293322797SELECT *FROM `foo`WHERE `key` >'1293322797'

加单引号和不加单引号就是这么大的差别!就是会对mysql性能产生这么大的影响。
再后来,我将字段`key`换成INT类型,这时候,加不加单引号,就没有什么差别了,EXPLAIN显示他们都同样能够用上主索引,只是key_len变短了。

就是这些,综上所述,我们在写SQL查询的时候还是不厌其烦的加上单引号吧,似乎那没有坏处。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • mysql性能优化脚本mysqltuner.pl使用介绍
  • MySQL性能优化
  • MySQL性能优化的一些技巧帮助你的数据库
  • MySQL性能优化 出题业务SQL优化
  • MySQL 性能优化的最佳20多条经验分享
  • mysql 性能的检查和调优方法
  • mysql慢查询
  • MySQL大数据查询性能优化教程(图)
  • mysql性能优化指南
  • MySQL配置文件my.cnf中文详解附mysql性能优化方法分享

相关文章

  • 2018-12-05mssql 30万条数据 搜索文本字段的各种方式对比
  • 2017-05-11MySQL操作数据库和表的常用命令新手教程
  • 2018-12-05SQL语句的执行原理分析
  • 2018-12-05MySQL UDF调试方式debugview的相关方法
  • 2018-12-05MySQL在Mac下初始化密码操作详解
  • 2018-12-05Oracle 忘记密码的找回方法
  • 2018-12-05 redis五大数据结果的测试
  • 2017-05-11mysql支持跨表delete删除多表记录
  • 2018-12-05统计数据库每天的数据增长量
  • 2018-12-055分钟读懂MySQL字符集设置

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • 解决mysql不能插入中文Incorrect string value
    • 常用的mysql日期函数
    • 浅谈MySQL JDBC StreamResult通信原理
    • sqlserver 2000中每个服务器角色的解释
    • UCenter info: MySQL Query Error SQL:SELECT value FROM [Table
    • PHP之Mysql常用SQL语句示例的深入分析
    • SQL2008中通过DBCC OPENTRAN和会话查询事务
    • 如何远程连接SQL Server数据库图文教程
    • mysql中关于删除语句大全总结(上)
    • MySQL优化配置文件my.ini(discuz论坛)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有