首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >MySQL查询速度或行读取

MySQL查询速度或行读取
EN

Stack Overflow用户
提问于 2013-05-09 10:15:12
回答 3查看 1.8K关注 0票数 0

很抱歉有很多没用的短信。最重要的东西是关于最后三段的:D。

最近,我们在一个客户端服务器上遇到了一些mysql问题。一些突然出现的东西启动了mysql进程的CPU。这个问题导致我们查找和优化糟糕的查询,下面是一个问题。

我认为优化正在加速查询(执行查询所需的总时间)。但是,在优化了几个针对它的查询之后,我的同事开始抱怨有些查询读取了太多行,所有行都从表中读取(如解释中所示)。

重写查询之后,我注意到,如果我想要一个查询读取较少的行--查询速度会受到影响,如果我的查询是为了速度--会读取更多的行。

这没有道理:读行少了,但执行时间长了

这让我想知道该怎么做。当然,拥有读取最少行的快速查询将是完美的。但既然这对我来说是不可能的,我正在寻找一些答案。我应该采用哪种方法--读行更快还是更少?当查询速度较快,但读取的行较多,读取的行较少,且速度较快时,利弊是什么?服务器在不同情况下会发生什么?

谷歌搜索后,我能找到的只是关于如何提高速度的文章和讨论,但都没有涵盖我之前提到的不同案例。

我期待着看到甚至个人的选择,当然,有一些理由。链接,可以指导我正确的方式,也欢迎。

EN

回答 3

Stack Overflow用户

发布于 2013-05-09 10:23:40

我认为您的问题取决于如何限制读取行的数量。如果您通过实现MySQL需要运行的更多WHERE子句来读取较少的行,那么是的,性能将受到影响。

我会考虑索引您的一些列,使您的搜索更加复杂。与复杂数据类型相比,简单数据类型查找速度更快。查看是否正在搜索索引列。

票数 2
EN

Stack Overflow用户

发布于 2013-05-09 10:24:18

如果没有更多的数据,我可以给你一些提示:

  1. 确保您的表正确地索引了。为每个表创建适当的索引。还删除不需要的索引。
  2. 为每个查询确定最佳方法。例如,如果只使用group by去重复行,则会浪费资源;最好使用select distinct (在索引字段上)。
  3. “分而治之”。你能把你的过程分成两步、三步或更多的中间步骤吗?如果答案是“是”,那么:您能为其中一些步骤创建临时表吗?我使用临时表来分割过程,它们对于加快速度非常有用。
票数 2
EN

Stack Overflow用户

发布于 2013-05-09 10:25:23

EXPLAIN报告的行数无论如何都是一个估计值--不要把它当作一个文字值。注意,如果在同一查询上多次运行EXPLAIN,每次读取的行数都会发生变化。这个估计甚至可能是完全不准确的,因为在解释中不时会出现错误。

在测试查询时,另一种衡量查询性能的方法是SHOW SESSION STATUS LIKE 'Handler%'。这将告诉您SQL层向存储引擎层请求单个行的次数。例如,请参阅我的演示文稿,SQL查询模式,优化

还存在一个问题,即请求的行是否已经在缓冲池中(假设您使用InnoDB),或者查询是否必须从磁盘读取它们,从而引发I/O操作。从磁盘读取的少数行可能比从RAM读取的大量行慢数量级。这不一定说明您的情况,但它指出,这种情况可能发生,“行读取”并不能告诉您查询是否导致I/O。由于InnoDB的多版本控制,单个行甚至可能存在多个I/O操作。

了解逻辑行请求与物理I/O读取之间的差异是很难的。在Percona中,对缓慢查询日志的增强包括每个查询的InnoDB I/O操作计数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16468350

复制
相关文章
sed命令在文本每行,行尾或行首添加字符
用sed命令在行首或行尾添加字符的命令有以下几种: 假设处理的文本为test.file
章工运维
2023/05/19
3.8K0
sed命令在文本每行,行尾或行首添加字符
自动删除vim中行尾空格
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
程序手艺人
2019/10/22
5K0
sed 删除命令
删除/etc/passwd中的不能登录的用户(筛选条件:/sbin/nologin)
用户1217611
2022/05/06
1.3K0
sed 删除命令
Python从字符串中删除字符
Sometimes we want to remove all occurrences of a character from a string. There are two common ways to achieve this.
全栈程序员站长
2022/09/01
5.8K0
Qt之去除指定行首/行尾字符(串)
3. 通过对比我们可以看到使用正则表达式会比使用left(right)与remove的形式慢,主要的原因是正则表达式需要解析表达式自身的原因。
Qt君
2019/07/15
4K0
(30)字符截取命令sed
sed是一种几乎包括在所有UNIX 平台(包括 Linux)的轻量级流编辑器。sed主要是用来将数据进行选取、替换、删除、新增的命令。
生信real
2020/09/02
1.5K0
Linux中sed工具的使用
sed 是一种流编辑器,它是文本处理中非常重要的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。
谢公子
2022/01/19
2.3K0
Linux中sed工具的使用
如何从 Python 中的字符串列表中删除特殊字符?
在进行字符串处理和文本分析时,有时我们需要从字符串列表中删除特殊字符。特殊字符可能是空格、标点符号、换行符等,在某些情况下它们可能干扰我们的文本处理或分析任务。Python 提供了多种方法来删除字符串列表中的特殊字符。本文将详细介绍在 Python 中删除字符串列表中特殊字符的几种常用方法,并提供示例代码帮助你理解和应用这些方法。
网络技术联盟站
2023/06/01
8.3K0
awk(报告生成器),grep(文本过滤器),sed(流编辑器)使用入门
三剑客 linux下的文本三剑客 grep egrep,grep,fgrep 文本查找的需要 grep:根据模式搜索文本,并将符合模式的文本行显示出来。 pattern:文本符和正则表达式的元字符组合而成的匹配条件 grep [option] "pattern" file grep root /etc/passwd -i:忽略大小写 --color:匹配的字符高亮显示 alias alias grep='grep --color' -v:反向查找 -o:只显示被模式匹配的字符串(不显示行
若与
2018/04/25
1.3K0
awk(报告生成器),grep(文本过滤器),sed(流编辑器)使用入门
linux工具——vim文本编辑器整理
vim是一个文本编辑神器, 长时间没用生疏了,这篇文章整理了一下vim常用操作和快捷键
数据仓库践行者
2022/03/15
1.1K0
linux工具——vim文本编辑器整理
Linux中sed命令简单介绍
说到sed命令,就不得不sed,awk,grep三个命令,很多时候这三个命令是一同出现的;
似水流年o
2022/05/03
1.9K0
sed 命令+正则表达式
sed是一个非交互性性文本编辑器, 它编辑文件或标准输入导出的文件拷贝。标准输入可能是来自键盘、文件重定向、字符串或变量,或者是一个管道文件。sed可以随意编辑小或大的文件,有许多 sed命令用来编辑、删除,并允许做这项工作时不在现场。sed一次性处理所有改变,因而变得很有效,对用户来说,最重要的是节省了时间。sed必须通过行号和正则表达式指定要改变的文本行
一见
2018/08/07
3.4K0
LINUX运维常用命令详解一
1、ls     文件属性:          -:普通文件          d:目录文件          b:块设备          c:字符设备文件          l:符号连接文件          p:命令管道          s:套接字文件      文件权限:          9位数字,每3位一组          文件硬链接次数          文件所属主(owner)          文件的属组(group)          文件大小(size),单位默认是字节      ls常用选项:          -l:显示文件属性,ls -l=ll          -h:做相应的单位转换显示          -a:显示所有文件          -A:显示.和..以为的所有文件          -d:显示目录自身属性          -i:显示文件的缩影接点号码(index node ,inode)          -r:逆序显示文件列表          -R:递归显示文件  2、cd     cd:change directory      cd:回到用户的家目录      cd ~username:进入指定用户的家目录      cd - :在当前目录和前一次所在的目录来回切换      cd ..:切换至其父目录  3、printenv:显示当前环境变量信息
菲宇
2022/12/02
9030
删除重复字符
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
喜欢ctrl的cxk
2019/11/08
1.7K0
干货!上古神器 sed 教程详解,小白也能看的懂
熟悉 Linux 的同学一定知道大名鼎鼎的 Linux 三剑客,它们是 grep、awk、sed,我们今天要聊的主角就是 sed。
用户3105362
2021/02/04
2.5K0
干货!上古神器 sed 教程详解,小白也能看的懂
详解流编辑器 sed 和 编程语言 awk
本文介绍了如何使用流编辑器sed和编程语言awk对文本进行编辑和处理。首先介绍了流编辑器sed,它是一种非交互式编辑器,可以用于删除、替换和插入文本。然后介绍了编程语言awk,它是一种功能强大的文本处理工具,可以用于各种文本处理任务,包括从文本中提取信息、过滤和转换文本以及处理文本数据。
s1mba
2017/12/28
1.2K0
详解流编辑器 sed 和 编程语言 awk
Vim常用快捷键
本文介绍了Vim常用快捷键,包括移动光标、删除、复制粘贴、撤销和查找等操作。
GavinZhou
2018/01/02
1.2K0
Linux:sed命令详解
1. 简介 sed 是非交互式的编辑器。它不会修改文件,除非使用 shell 重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。 sed 编辑器逐行处理文件(或输入),并将结果发送到屏幕。具
张戈
2018/03/23
7.1K0
Linux:sed命令详解
python 删除字符
s = '\tabc\t123\tisk' print(s.replace('\t', ''))
用户5760343
2019/07/24
1.6K0
Shell四剑客实操案例
在Shell编程工具中,四剑客工具的使用更加的广泛,Shell编程四剑客包括:find、sed、grep、awk,熟练掌握四剑客会对Shell编程能力极大的提升。
胡齐
2019/09/23
2.1K0

相似问题

使用UL时避免换行符

43

使用jquery append()或html()时避免换行

20

避免换行

23

Eclipse避免使用jmockit换行

11

避免使用AppleScript进行换行

31
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文