我在互联网上看过这个问题(例如here和here),但我从未见过这么好的答案。是否有可能找到给定的MySQL查询(通过mysql_query执行)通过PHP获取的时间长度?
有些地方建议使用php的microtime
功能,但这似乎可能不准确。 mysql_query
可能会因网络延迟或缓慢响应您的查询的缓慢系统或其他一些无关原因而陷入困境。这些都与查询的质量没有直接关系,这是我真正想要在这里测试的唯一内容。 (如果你不同意,请在评论中提及!)
答案 0 :(得分:1)
我的回答很相似,但各不相同。记录查询之前和之后的时间,但在数据库查询类中执行此操作。哦,你说你直接使用mysql_query?那么,现在你知道为什么你应该使用这些原始php数据库函数的类包装器(原谅snark)。实际上,已经建立了一个名为PDO的东西:
如果您想扩展功能以围绕每个查询进行计时...扩展课程!很简单,对吧?
答案 1 :(得分:0)
我只检查查询本身的质量,然后从等式中删除PHP。使用MySQL Query Browser或SQLyog等工具。
或者如果你有shell访问权限,只需直接连接即可。在确定查询的实际性能时,这些方法中的任何一种都是优越的。
答案 2 :(得分:0)
在php级别,你几乎需要记录查询之前和之后的时间。
如果您只关心查询性能本身,您可以在mysql服务器中启用慢查询日志:http://dev.mysql.com/doc/refman/5.0/en/slow-query-log.html这将记录超过指定秒数的所有查询。
答案 3 :(得分:0)
如果您确实需要查询信息,可以使用SHOW PROFILES:
http://dev.mysql.com/doc/refman/5.0/en/show-profiles.html
就个人而言,我会结合使用microtimeing,慢查询日志,mytop以及使用MySQL客户端(命令行)分析问题查询。