我的编程空间,编程开发者的网络收藏夹
学习永远不晚

改变MySQL性能的一个单引号

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

改变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 分别跑了一下上面两条语句,见下面两张图:

没有单引号时

改变MySQL性能的一个单引号

有单引号时

改变MySQL性能的一个单引号

很明显,不使用单引号没有用上主索引,并进行了全表扫描,使用单引号就能使用上索引了。

后来我用大于分别进行了测试,返回的结果集相同,而他们的耗时和上面一样,用 EXPLAIN 测试,也和上面一样

SELECT * FROM `foo`  WHERE `key` >1293322797
SELECT * FROM `foo` WHERE `key` >'1293322797'

加单引号和不加单引号就是这么大的差别!就是会对 mysql 性能产生这么大的影响。

再后来,我将字段 key 换成 INT 类型,这时候,加不加单引号,就没有什么差别了,EXPLAIN 显示他们都同样能够用上主索引,只是 key_len 变短了。

改变MySQL性能的一个单引号

关于一个单引号改变MySQL性能就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果喜欢这篇文章,不如把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

改变MySQL性能的一个单引号

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

在MySQL concat里面使用多个单引号,三引号的问题

在动态拼接字符串时,我们常会用到字符拼接,我对拼接的引号不理解,如: 1、'''+ id +''' 为什么是3个引号,为什么左边一个加号右边一个加号(能不能着重帮我解释下这个,详细点) SQL codesum(case Leave when
2022-05-21

每天一个Linux命令之shell单引号和双引号的经典解释

01 经典解释 单引号:所见即所得 双引号:所见非所得,它会先把变量解析之后,再输出 反引号(``) :命令替换,通常用于把命令输出结果传给入变量中 反斜杠( \ ) :转义字符/逃脱字符,linux如果echo
2022-06-04

linux如何改变一个文件的所有人属性

本文详细介绍了如何在Linux系统中通过chown、usermod、chgrp和setfacl命令以及图形界面和sudo指令修改文件的所有权。这些方法允许用户更改文件或目录的所属用户、组或访问控制列表(ACL),以调整系统上的文件权限和访问控制。
linux如何改变一个文件的所有人属性
2024-04-02

linux如何改变一个目录的所有人属性并同时改变改目录下所有文件的属性

Linux中更改目录和文件所有权指南,使用chown命令递归更改目录及其下所有文件和子目录的所有权。通过id命令确定新所有者和组,并使用chown-R命令执行更改。确认更改时使用ls-l命令。本文还介绍了其他选项和注意事项,包括标志和示例,以帮助用户有效地更改文件和目录的所有权。
linux如何改变一个目录的所有人属性并同时改变改目录下所有文件的属性
2024-04-02

mysql怎么修改表的一个字段属性

要修改表的一个字段属性,可以使用ALTER TABLE语句来实现。以下是一个示例:ALTER TABLE table_name MODIFY column_name new_data_type;在这个语句中,table_name 是要修改
mysql怎么修改表的一个字段属性
2024-05-21

如何使用MySQL和Java实现一个简单的搜索引擎功能

要使用MySQL和Java实现一个简单的搜索引擎功能,可以按照以下步骤进行:1. 创建数据库:首先,使用MySQL Workbench或者其他工具创建一个数据库。创建一个表来存储需要搜索的数据,例如,可以创建一个名为"documents"的
2023-10-20

如何使用MySQL和Java实现一个简单的搜索引擎功能

使用MySQL和Java实现搜索引擎功能本指南提供分步说明,介绍如何使用MySQL数据库和Java代码构建一个简单的搜索引擎。通过将文档插入MySQL表并运行Java程序,您可以搜索内容并检索相关结果。优化措施包括索引、全文搜索和相关性评分。高级功能,如高级搜索语法和排序,可增强用户体验。通过实施这些步骤和优化,您可以使用MySQL和Java创建一个高效且用户友好的搜索引擎。
如何使用MySQL和Java实现一个简单的搜索引擎功能
2024-04-09

MySQL Galera集群与单一MySQL实例的性能对比

MySQL Galera集群与单一MySQL实例在性能上各有优劣,以下是对这两者的性能对比分析:MySQL Galera集群的性能特点多主同步复制:Galera集群支持真正的多主模式,任何数据修改都会被复制到其他节点,确保数据强一致性。
MySQL Galera集群与单一MySQL实例的性能对比
2024-09-04

linux如何改变一个文件的所有人和群组属性

Linux的文件访问权限由所有者、组和其他三类实体控制。本文提供指南,介绍如何使用chown和chgrp命令更改文件的所有者和所属组。chown命令更改文件所有者,其语法为:chown[选项]新所有者文件名。使用-R选项递归更改目录所有者。chgrp命令更改文件组,其语法为:chgrp[选项]新组文件名。使用-R选项递归更改目录组。find命令结合chown和chgrp命令可以递归更改所有权和组,其语法为:find目录路径-execchown新所有者{};
linux如何改变一个文件的所有人和群组属性
2024-04-02

PHP与MySQL索引的数据变更和数据一致性的优化策略及其对性能的影响

引言在Web开发中,PHP和MySQL是最常用的组合之一。针对大量数据的增删改查操作,索引的设计和优化是非常重要的。本文将介绍PHP与MySQL索引的数据变更和数据一致性的优化策略,并探讨这些策略对系统性能的影响,并提供相应的代码示例。一、
2023-10-21

SAP能修改一个已经分配给交货单的HU吗

这篇文章主要介绍“SAP能修改一个已经分配给交货单的HU吗”,在日常操作中,相信很多人在SAP能修改一个已经分配给交货单的HU吗问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SAP能修改一个已经分配给交货单的
2023-06-05

编程热搜

目录