我们遇到了一个小故障,导致设备产生了意外数量的数据。我们的代码最终沿着 SELEXT * from XXX WHERE yyy IN (xxx,xxx,xxx....,xxxx) 的行创建一个选择查询,这应该获取过去 5 天的数据,这通常根本不是问题,因为WHERE 字段已建立索引。
我们突然开始出现大量缓慢的查询并使服务器陷入困境。在我们中止查询之前,查询运行了大约 5000 秒。弄清楚发生了什么后发现,如果我们在 IN () 子句中有一个最多包含 33594 个参数的查询,则一切正常,查询会在 200 毫秒内完成。如果我们添加一个参数,选择似乎会永远运行。我们没有让一个无限期地运行直到它完成,所以我不确定它是否会完成,但它们似乎至少持续几个小时......
select 内的数据约为 361.04KB。我们在 Google Cloud SQL 上运行 MYSQL MYSQL_8_0_31
关于可能导致这种行为的任何想法?