Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL的性能_Php_Mysql - Fatal编程技术网

Php MySQL的性能

Php MySQL的性能,php,mysql,Php,Mysql,MyPHP应用程序通过HTTPClient向MySQL发送SELECT语句 大约需要20秒或更长时间。 我认为MySQL不能立即得到结果,因为MySQL管理员在我等待结果时显示stat,用于发送数据或复制到tmp表 但是,当我从另一个应用程序(如phpMyAdmin或jmater)发送相同的SELECT语句时,它需要2秒或更少的时间。快了10倍 有人知道为什么MySQL表现如此不同吗 有人知道为什么MySQL表现如此不同吗 因为MySQL会导致错误,操作系统会缓存磁盘I/O(在Linux中描述该

MyPHP应用程序通过HTTPClient向MySQL发送SELECT语句

大约需要20秒或更长时间。 我认为MySQL不能立即得到结果,因为MySQL管理员在我等待结果时显示stat,用于
发送数据
复制到tmp表

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

有人知道为什么MySQL表现如此不同吗

有人知道为什么MySQL表现如此不同吗

因为MySQL会导致错误,操作系统会缓存磁盘I/O(在Linux中描述该过程)

有人知道为什么MySQL表现如此不同吗


因为MySQL会产生查询结果,并且操作系统会缓存磁盘I/O(在Linux中描述该过程)

就像@symcbean已经说过的那样,php的MySQL驱动程序会缓存查询结果。这也是为什么您可以在
while($row=mysql\u fetch\u array())
循环中执行另一个
mysql\u query()

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

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

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

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

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

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

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

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

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

向我们显示查询,如果您能在mysql控制台中显示“EXPLAIN”的输出也会有所帮助。查询是什么,表模式以及表中有多少行?一些神秘的查询(和或代码)很慢,您认为我们能帮到您吗?非常抱歉。这个PHP应用程序已经发送了另外两个SELECT语句。这就是为什么MySQL显示了不同的性能。投票删除以删除此帖子。向我们展示查询,如果您可以在MySQL控制台中显示“EXPLAIN”的输出,这也会有所帮助。查询是什么,表架构以及表中有多少行?一些神秘的查询(和或代码)太慢了,你觉得我们能帮你什么?非常抱歉。这个PHP应用程序发送了另外两个SELECT语句。这就是为什么MySQL显示不同的性能。请投票删除此帖子。