- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 heidiSQL 编辑器运行 mySQL 查询。当它告诉我查询时间时,有时还会包括网络时间:
1 次查询的持续时间:1.194 秒。 (+ 10.078 秒网络)
但它不可能真的是网络,因为一切都在我自己的电脑上??额外的时间是否会随着其他设置而消失,或者我是否需要以通常的方式(重写/返工)提高查询性能?当我什至不确定是什么导致性能不佳时,我很难提高查询性能。
编辑:分析信息
我使用了这个简洁的分析 sql:http://www.mysqlperformanceblog.com/2012/02/20/how-to-convert-show-profiles-into-a-real-profile/
查询 1:
从my_table_with_100_thousand_rows中选择count(*);
“1 个查询的持续时间:0.390 秒。”(这个没有显示任何网络时间,但是一个简单的 count(*) 将近 0.4 秒似乎很多。)
STATE Total_R Pct_R Calls R/Call
Sending data 0.392060 35.84 1 0.3920600000
freeing items 0.000214 0.02 1 0.0002140000
starting 0.000070 0.01 1 0.0000700000
Opening tables 0.000031 0.00 1 0.0000310000
statistics 0.000024 0.00 1 0.0000240000
init 0.000020 0.00 1 0.0000200000
(shorter times not included)
查询 2:
从 4 个包含许多行的表中选择 *,通过主键-外键或索引列连接。
“1 次查询的持续时间:0.156 秒(+ 10.140 秒网络)”(以下时间加起来超过总数?)
STATE Total_R Pct_R Calls R/Call
Sending data 16.424433 NULL 1 16.4244330000
freeing items 0.000390 NULL 1 0.0003900000
starting 0.000116 NULL 1 0.0001160000
statistics 0.000054 NULL 1 0.0000540000
Opening tables 0.000050 NULL 1 0.0000500000
init 0.000046 NULL 1 0.0000460000
preparing 0.000033 NULL 1 0.0000330000
optimizing 0.000028 NULL 1 0.0000280000
(shorter times not included)
查询 3:与查询 2 相同,但使用 count * 而不是 select *
“1 次查询的持续时间:10.047 秒。”
STATE Total_R Pct_R Calls R/Call
Sending data 10.050007 NULL 1 10.0500070000
(shorter times not included)
在我看来,如果它必须显示很多行,它会将网络时间包括在“持续时间”中,但这并不意味着我可以减去不需要显示行的时间。现在是真正的查询时间。这看起来对吗?
最佳答案
老问题!我很确定 Heidi 将耗时算作“网络时间”--
因此,对于您的 SELECT COUNT(*) FROM big _f_table
查询,第一个数据包立即返回,并声明有一个包含整数的列。
当查询引擎完成对行的计数时,该结果集的其余部分就会出现。所以海蒂所谓的“网络时间”就是统计行数的时间。这对于 MyISAM 来说几乎是瞬时的,而对于 InnoDB 则需要一些时间。
对于您的 SELECT tons of columns FROM complex join
同样的事情也适用。当查询计划器计算出结果集中的列时,第一个数据包到达。当所有数据最终通过您计算机的内部环回(本地主机)网络传输到 Heidi 时,最后一个数据包到达。
这就像您在浏览器开发工具中看到的一样。查询时间类似于“第一个字节的时间”,“网络时间”是传递剩余结果的时间。第一个字节的时间是查询解析/计划时间加上获取足够信息以发送结果集元数据的时间。网络时间是得到休息的时间。如果查询规划器可以直接从表存储中将行流式传输给您,您将拥有很大比例的网络时间。另一方面,如果它必须处理数据(例如使用 ORDER BY),您将有更高比例的查询时间。但是不要试图想太多这些东西。 MariaDB 和 MySQL 非常复杂,有层层缓存和抓取。他们满足查询的方式有时很难弄清楚。
关于MySQL (HeidiSQL) : Using localhost but 10 seconds of query time is "network"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10396164/
我是 HeidiSQL 的新手,似乎找不到手册。如何使客户端内部的字段独一无二?我看到 this post here describing the SQL statement我需要的。有没有办法在带有
抱歉,如果标题不清楚,想不出一个简洁的方式来表达这一点。 我想知道 HeidiSQL 是否有一些简单的功能可以快速创建一个新的选择查询,该查询明确列出该表中包含的每一列。在 MS SQL Manage
我的 postgres yaml 部分看起来像这样: postgres: container_name: 'postgres' image: postgres:10.1 env
我想用 HeidiSQL 将一个 csv 文件导入我的 MySQL 数据库。 但是我的一些字段是空的。 我该怎么做才能让 HeidiSQL 知道这些空值必须被视为 NULL 值? csv 文件样本(最
我可以获得一些调试此查询的帮助吗?我在第 2 行收到错误 1064: use MyDB CREATE TABLE 'room_table' ( 'id' int(10) unsigned au
当我尝试创建新表时,我不断收到如下图所示的错误: 这是我的代码: CREATE TABLE SalesKicker { id INT(6) UNSIGNED AUTO_INCREMENT, PRIMA
在我的heidiSql数据库中,我有ringee用户表..在该表中我有ringee用户ID,用户名,手机号码,imei代码,被删除...这里 Ringee用户ID是主键。我有另一个名为事件表的表...
我最近安装了 WAMP 服务器,它显然将我的 MySQL 版本从 5.7 或其他版本升级了(我不知道)。现在,当我打开 Heidi SQL 访问与 WAMP 无关的其他数据库时,它们不再存在,可能是因
我是 SQL 的新手。我目前有一个包含 4 列的数据库:年、月、日和总金额(月份采用字符串格式:Jan、Feb、...)。此外,我正在使用 HeidiSQL 开发数据库。 因此,请问如何按 Jan、F
我正在尝试在 heidisql (mysql) 中创建一个存储过程。 CREATE PROCEDURE SP_FORM20_POST( P_SESSIONID VARCHAR(256)
根据 this HeidiSQL 将经过混淆处理的密码存储在注册表中。我想以更安全的方式保存它们: 我有一个加密的 VeraCrypt 卷,我希望 HeidiSQL 仅在安装该卷时访问我的密码。有办法
我在 Windows XP 上本地安装了 MariaDB。 我创建了一个空数据库 db_y,我想用数据库 db_x 的表填充它,我从 MySQL 实例(使用 HeidiSQL)导出为转储文件。 当我将
我正在使用的配置: Network type : SSH Tunnel Hostname : 127.0.0.1 User : *Database Username* Password : *Data
这个问题已经有答案了: SELECT list is not in GROUP BY clause and contains nonaggregated column .... incompatibl
我做项目并且使用MySql。我喜欢 HeidiSql 界面,通常这样,所以我想连接到我的本地数据库。但我真的觉得,也许我很愚蠢,因为无论我输入什么主机名,我都会有错误。无论如何,当我在 cmd 中输入
我们正在使用 HeidiSQL 和 MySQL 管理我们的网络应用程序数据。 它是一个完整的数据库结构,包含用户、列表、交易等。 我们希望保持相同的完整结构,但只需导出可用数据的一小部分样本,以便我们
我想问一下是否有任何配置允许 HeidiSQL 生成如下所示的 INSERT 查询: INSERT INTO state SET ST_ID = NULL, ST_NAME = "lol" 代替: I
我正在使用 HeidiSQL,因为我发现它比 PMA 更容易构建,但 PMA 有一个很好的基本图表工具。 我有一个名为 test2 的数据库。我想重命名它或理想地克隆它。遗憾的是看不到如何在 Heid
希望有人能帮助我解决我遇到的这个问题。 HeidiSQL 无法连接到我的 RDS 数据库。当我在我的 EC2 实例上但不使用 Heidi SQL 时,我可以连接到它。我不断收到的错误是: Can't
我使用的是 HeidiSQL 9.3.0.5104。如果我在使用表 GUI 时插入一个新行或更改一个值(通过单击一个字段并在其中键入)然后我单击该行之外,HeidiSQl 会自动运行 INSERT 或
我是一名优秀的程序员,十分优秀!