MyPHP 应用程序使用 HTTPClient 向 MySQL 发送一个 SELECT 语句。
大约需要 20 秒或更长时间。我认为 MySQL 无法立即获得结果,因为 MySQL 管理员在我等待结果期间sending data
或期间显示 stat 。copying to tmp table
但是,当我从另一个应用程序(如 phpMyAdmin 或 jmater)发送相同的 SELECT 语句时,它需要 2 秒或更短时间。快 10 倍!
有谁知道为什么 MySQL 表现如此不同?
就像@symcbean 已经说过的那样,php 的 mysql 驱动程序缓存查询结果。这也是为什么你可以mysql_query()
在while($row=mysql_fetch_array())
循环中再做一次。
MySql Administrator 或 phpMyAdmin 如此快速地显示结果的原因是它们LIMIT 10
在您背后附加了一个查询。
如果您想快速获得查询结果,我可以提供一些提示。它们涉及仅选择您需要的内容以及何时需要:
select *
到处乱扔。当您想要另一列但忘记将其添加到select
语句时,这可能会咬到您,所以在需要时执行此操作(例如具有 100 列或一百万行的表)。while()
而不是在循环中检索其他详细信息。这可能看起来不合逻辑,因为您进行了更多查询,但是当您处理涉及大约 10 个表、数百个并发用户、锁和查询缓存的查询时;一开始事情并不总是有意义的:)这些是我从老板和我自己的经验中学到的一些技巧。一如既往,YMMV。