【发布时间】:2019-12-14 21:37:47
【问题描述】:
我有一些查询,它的文本非常大。
SELECT id FROM my_table WHERE name IN ('name1','name2',...)
- 每个名称约为 100 个字符。
- 表包含10M行,
- 字段名称已编入索引。
我注意到,超过某个阈值,比如 26K,性能下降,查询速度慢了约 10 倍。
例如:
25K 个名字耗时 0.27 秒
26K 个名字耗时 3.19 秒
查询长度(即sql文本本身)是否有任何限制? 还有什么?
【问题讨论】:
-
速度表现可能是硬件问题?你检查内存使用了吗?如果内存达到 100% ,计算机可以切换到硬盘上的虚拟内存,这会超级慢
-
IN 子句的结果来自外部查询???
-
为什么不创建一个包含 IN() 中所有名称的索引列的表,然后将其连接到您的第一个表?
-
@scaisEdge 不,来自外源。
-
@Strawberry 是用户提供的动态列表
标签: mysql sql optimization