gpt4 book ai didi

php - MySQL COUNT 与 SELECT 行性能

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

我有一个包含三列并使用 PHP 的小表。

TABLE (id unsigned int(10), gameid unsigned int(10), userid unsigned int(10)) - id, gameid 和 userid 被索引。

在某个时候(当玩家加入游戏时)系统将检查游戏中是否已经有 100 名玩家,如果有,它会检索所有行并对它们执行一些操作,最后这些行将被删除。

选择查询:

SELECT * FROM table WHERE gameid = 1 ORDER BY id ASC LIMIT 100

COUNT 个查询:

SELECT COUNT(*) as rows FROM table WHERE gameid = 1 LIMIT 100

删除查询:

DELETE FROM table WHERE gameid = 1 ORDER BY id ASC LIMIT 100

我的问题是关于性能和速度,哪个更好:

方法 1(3 个查询)

  • 执行 COUNT 查询并检查表中有多少行
  • 如果行数 >= 100,则执行:
    • 执行SELECT查询并处理数据
    • 执行删除查询

方法 2(2 查询)

  • 执行选择查询
  • 如果 count(rows) >= 100 做:
    • 处理数据
    • 执行删除查询

哪种方法更好用?

谢谢

最佳答案

microtime(true) 是您的 PHP friend 。

如果有一个以 gameid 开头的索引,“方法 1”可能会更快,因为它可以执行 COUNT(*)在索引中。

另一方面,有两点对它不利:

  • 3 个查询通常比 2 个慢。
  • 如果 gameid = 1 的行数超过 100 行(似乎不是这种情况),它会花费更多时间进行完整计数。 “方法 2”停在 100。

我认为真正的答案是“两者之间没有足够的区别。”

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

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