我正在使用MySQL工作台 - 运行查询时持续时间和获取时间之间有什么区别?
还有一种方法可以在MySQL中启用微秒选项吗?
答案 0 :(得分:113)
获取时间 - 测量传输获取结果所需的时间,这与查询执行无关。我不认为它是sql查询调试/优化选项,因为获取时间取决于网络连接,它本身与查询优化没有任何关系。如果获取时间是瓶颈,则更有可能出现网络问题。
注意:获取时间可能因每次查询执行而异。
持续时间 - 是查询需要执行的时间。在优化sql查询的性能时,应尽量将其最小化。
答案 1 :(得分:13)
持续时间显示执行查询所需的时间,获取是读取结果集所需的时间(检索数据)
我不确定微秒选项。如果这是关于优化的,请记住 - “过早优化是所有邪恶的根源”
答案 2 :(得分:0)
关于微秒,尝试在“首选项”菜单中启用它,我之前也有一个关于持续时间和获取时间的问题,现在我似乎得到的答案是持续时间是查询的执行时间,以及获取检索结果并将它们发送到您想要的任何地方。例如,我得到的查询持续时间为0.078,但需要60秒才能将数据发送回我的网站。
答案 3 :(得分:0)
执行时间是准备查询和运行查询AND所花费的时间 获取时间是拉入行结果所花费的时间
答案 4 :(得分:0)
Leri 的回答是一个好的开始,但忽略了这样一个事实,即 MySQL 可以在获得所有查询结果之前将数据流式发送到客户端。
下面是一个带有 相同结果的 2 个查询的示例。 第一个使用 group by,因此 MySQL 在发送所有数据之前必须计算完整聚合。 第二个使用子查询,因此 MySQL 逐行计算结果集,并能够立即将第一行结果发送给客户端。
如您所见,第二次查询的获取时间长了 5 倍(对于相同的数据),因为 MySQL Workbench 将第一次收到数据之前的时间显示为 Duration< /em> 和之后的时间为 Fetch,但由于可能涉及流式传输,这并不意味着 fetch 持续时间只是网络持续时间。
在 Fetch 期间,数据库可能仍在计算结果。 因此,如果您看到 fetch 持续时间很大,您实际上可以做点什么!这可能意味着您的 MySQL 数据库正在逐行流式传输结果并努力计算完整的结果集。