gpt4 book ai didi

php - 帮助加快 MySql 查询速度

转载 作者:行者123 更新时间:2023-11-29 06:18:21 25 4
gpt4 key购买 nike

如何加快 mysql 查询速度?

   SET @rank = 0;  

UPDATE dbTable
SET rank_fd = @rank := @rank + 1
ORDER BY fd2 DESC, fd3 DESC;

此查询更新约 300,000 个表行。只是花费的时间太长了......简单的控制面板(涡轮面板?)说 mysqld 仅使用 8-9% 的 cpu。我知道这永远是真的,但这个查询在我的 Core i7 机器上几乎不需要那么长时间。我认为在我的 P4 专用服务器上大约需要 5-10 分钟...这不会是问题,除非我必须针对不同的值多次执行此操作。它还使得其他 mysql 操作极其缓慢(几乎挂起),从而极大地影响网站性能。

软件:

  • CentOS 版本 5.4(最终版),
  • 简单控制面板版本 1.4.8,
  • PHP 5.2.16
  • MySQL 客户端版本:5.1.52

硬件:

  • 英特尔奔腾 4 CPU 3.0GHz
  • 2GB 内存

更多信息(于 2011 年 3 月 6 日@ 10:06PM CST 添加):

//Core i7 920 @ 2.6GHz, 6GB Ram
UPDATE dbTable SET rank_fd =999999999;
#275037 row(s) affected. ( Query took 7.0708 sec )

SET @rank =0;
#Your SQL query has been executed successfully ( Query took 0.0003 sec )

UPDATE dbTable SET rank_fd = @rank := @rank +1 ORDER BY fd2 DESC, fd3 DESC ;
#275037 row(s) affected. ( Query took 9.9931 sec )



//P4 3.0GHz, 2GB Ram
UPDATE dbTable SET rank_fd =999999999;
#Affected rows: 291468 (Query took 8.2165 sec)

SET @rank =0;
#Your SQL query has been executed successfully (Query took 0.0002 sec)

UPDATE dbTable SET rank_fd = @rank := @rank +1 ORDER BY fd2 DESC, fd3 DESC ;
#Affected rows: 291469 (Query took 305.2104 sec)

更多信息(于 2011 年 3 月 7 日下午 6:37 CST 添加):

我得到了一些新信息。如果我在 P4 上执行 select 语句:

SET @rank =0;
SELECT @rank := @rank +1 AS rank_fd FROM dbTable ORDER BY fd2 DESC, fd3 DESC LIMIT 0, 300000;
#Showing rows 0 - 29 (292,437 total, Query took 3.0448 sec)

计算一切只需要3秒。 no-calc批量更新语句只需要8秒。到底是什么导致了我原来的陈述超过了 300 秒?有没有一种方法可以在不涉及 PHP 的 select calc 语句之后捕获更新。我这么说只是因为如果我在 PHP 中循环它,它会比原始语句花费更长的时间。

感谢迄今为止的所有帮助!!!

最佳答案

您正在修改表中的每一行,当然会很慢。根据 rank_fd 的使用方式,您可能只需在 fd2fd3 上放置索引并在运行时计算排名即可。

关于php - 帮助加快 MySql 查询速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5215121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com