php - MySQL的性能

标签 php mysql

MyPHP 应用程序使用 HTTPClient 向 MySQL 发送一个 SELECT 语句。

大约需要 20 秒或更长时间。 我以为 MySQL 无法立即得到结果,因为 MySQL Administrator 在我等待结果时显示了 发送数据复制到 tmp 表 的状态。

但是当我从另一个应用程序(如 phpMyAdmin 或 jmater)发送相同的 SELECT 语句时,它只需要 2 秒或更少。快 10 倍!!

有谁知道为什么 MySQL 表现如此不同?

最佳答案

就像@symcbean 已经说过的,php 的mysql 驱动程序缓存查询结果。这也是为什么您可以在 while($row=mysql_fetch_array()) 循环中执行另一个 mysql_query() 的原因。

MySql Administrator 或 phpMyAdmin 显示结果如此之快的原因是他们在背后向您的查询附加了一个 LIMIT 10

如果您想快速获得查询结果,我可以提供一些提示。它们涉及仅选择您需要的内容以及您需要的时间:

  • 只选择您需要的列,不要到处乱扔 select *。稍后当您想要另一列但忘记将其添加到 select 语句时,这可能会困扰您,因此请在需要时执行此操作(例如具有 100 列或一百万行的表)。
  • 不要在用户面前扔一张 20 x 1000 的表格。无论如何,她无法在一张巨大的 table 上找到她要找的东西。提供排序和过滤。作为奖励,找出她通常寻找的内容,并提供一种只需单击一下即可显示该记录的方法。
  • 对于非常大的表,只选择您需要的记录的主键。比在 while() 循环中检索更多详细信息。这可能看起来不合逻辑,因为您进行了更多查询,但是当您处理涉及大约 10 个表、数百个并发用户、锁和查询缓存的查询时;一开始事情并不总是有意义:)

这些是我从老板和我自己的经验中学到的一些技巧。一如既往,YMMV。

关于php - MySQL的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12155779/

相关文章:

mysql - 这个更新声明是如何工作的?

mysql - 使用MySQL,如何根据半相关记录计算 View 字段?

mysql - 从满足某些要求的表中获取数据

mysql - 在索引到 solr 之前预处理数据

javascript - d3.js 的多行

PHP foreach 用户脚本似乎使 apache 挂起

php - 滚动你自己的纯文本 Wiki(数据库中的 Wiki)

php - 使用 XMLHTTPRequest 将文件从 iPhone 上传到服务器

Mysql 查询在给定时间间隔内预订汽车和司机

php - 更新 json 数组的项