繁体   English   中英

MySQL COUNT与SELECT行的性能

[英]MySQL COUNT vs SELECT rows performance

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

TABLE(id unsigned int(10),gameid unsigned int(10),userid unsigned int(10))-对id,gameid和userid进行了索引。

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

SELECT查询:

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个查询)

  • 执行SELECT查询
  • 如果计数(行)> = 100,请执行以下操作:
    • 处理数据
    • 执行删除查询

哪种方法会更好用?

谢谢

microtime(true)是您的PHP朋友。

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

另一方面,有两件事不利于它:

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

我认为真正的答案是“两者之间没有太大的区别。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM