我有两个要分析其计时参数的查询。
第一个查询所花的时间比第二个要长得多,而我认为应该相反。任何解释?
第一个查询:
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秒。
答案 0 :(得分:1)
两个查询之间的测量性能可能不同的原因有很多:
mrn
是一个字符串,对于第一个查询中的结果集来说确实很长,但对第二个查询而言不是)您的观察是正确的。第一个应该比第二个更快。不过,更重要的是,观察到这对于您的简单查询完全没有意义:
第一个查询在0.760秒内运行
select mrn from EncounterInformation limit 20;
为此完成的工作通常是加载一个数据页(或可能几个)。如果满足以下条件,则只需花费0.760秒即可>
EncounterInformation
是一个视图,而不是一个表。如果差异介于0.760 毫秒秒和0.509毫秒之间,则差异确实很小,并且可能是由于其他问题-高速缓存,服务器上的其他活动,其他数据库活动所致。< / p>
也有可能是在测量已用时间而不是数据库时间,因此网络拥塞可能是一个问题。
如果要查询视图,则所有投注都将关闭,而不知道视图是什么。实际上,如果您关心性能,则应该在问题中包括执行计划。
我无法解释区别。我可以说的是您的观察是合理的,但是您的问题缺少很多信息,表明您需要更多地了解如何理解时间安排。我建议您从了解explain
开始。