sql 查询的惊人时间统计
Surprising timing stats for sql queries
我有两个查询,我想分析其计时参数。
第一个查询比第二个查询花费的时间长得多,而在我看来它应该是另一种方式round.Any解释?
第一次查询:
select mrn
from EncounterInformation
limit 20;
第二次查询:
select enc.mrn, fl.fileallocationid
from EncounterInformation as enc inner join
FileAllocation as fl
on enc.encounterIndexId = fl.encounterid
limit 20;
MYSQL 第一个查询在 0.760 秒内运行,而第二个查询在 0.509 秒内运行令人惊讶。
两个查询之间的测量性能可能不同的原因有很多:
- 查询的执行计划(主导因素)
- 返回数据的大小(可能
mrn
是一个字符串,对于第一个查询的结果集来说真的很长,但对第二个查询不是)
- 其他数据库 activity,锁定 table 和索引
- 其他服务器activity
- pre-loaded 的数据和索引缓存 -- 在数据库本身或底层 OS 组件中
您的观察是正确的。第一个应该比第二个快。更重要的是观察到这对您的简单查询根本没有意义:
The first query runs in 0.760 seconds
select mrn
from EncounterInformation
limit 20;
为此所做的工作通常是加载一个数据页(或者可能是少数)。如果满足以下条件,那只会持续花费 0.760 秒:
- 你的数据存储真的很慢(想想 "carrier pigeons")。
EncounterInformation
是视图而不是 table。
- 你不懂时间。
如果差异介于 0.760 毫秒 秒和 0.509 毫秒之间,则差异非常小,可能是由于其他问题——热缓存、其他 activity在服务器上,其他数据库 activity.
也有可能您正在测量 已用 时间而不是数据库时间,因此网络拥塞可能是一个问题。
如果您正在查询视图,那么在不知道视图是什么的情况下,所有的赌注都是无效的。事实上,如果您关心性能,您应该在问题中包括执行计划。
我无法解释其中的区别。我能说的是你的观察是合理的,但你的问题缺乏很多信息表明你需要更多地了解如何理解时间。我建议您从了解 explain
.
开始
我有两个查询,我想分析其计时参数。
第一个查询比第二个查询花费的时间长得多,而在我看来它应该是另一种方式round.Any解释?
第一次查询:
select mrn
from EncounterInformation
limit 20;
第二次查询:
select enc.mrn, fl.fileallocationid
from EncounterInformation as enc inner join
FileAllocation as fl
on enc.encounterIndexId = fl.encounterid
limit 20;
MYSQL 第一个查询在 0.760 秒内运行,而第二个查询在 0.509 秒内运行令人惊讶。
两个查询之间的测量性能可能不同的原因有很多:
- 查询的执行计划(主导因素)
- 返回数据的大小(可能
mrn
是一个字符串,对于第一个查询的结果集来说真的很长,但对第二个查询不是) - 其他数据库 activity,锁定 table 和索引
- 其他服务器activity
- pre-loaded 的数据和索引缓存 -- 在数据库本身或底层 OS 组件中
您的观察是正确的。第一个应该比第二个快。更重要的是观察到这对您的简单查询根本没有意义:
The first query runs in 0.760 seconds
select mrn from EncounterInformation limit 20;
为此所做的工作通常是加载一个数据页(或者可能是少数)。如果满足以下条件,那只会持续花费 0.760 秒:
- 你的数据存储真的很慢(想想 "carrier pigeons")。
EncounterInformation
是视图而不是 table。- 你不懂时间。
如果差异介于 0.760 毫秒 秒和 0.509 毫秒之间,则差异非常小,可能是由于其他问题——热缓存、其他 activity在服务器上,其他数据库 activity.
也有可能您正在测量 已用 时间而不是数据库时间,因此网络拥塞可能是一个问题。
如果您正在查询视图,那么在不知道视图是什么的情况下,所有的赌注都是无效的。事实上,如果您关心性能,您应该在问题中包括执行计划。
我无法解释其中的区别。我能说的是你的观察是合理的,但你的问题缺乏很多信息表明你需要更多地了解如何理解时间。我建议您从了解 explain
.