我正在寻找在 MySQL 查询优化器/缓存方面知识渊博的人。
我必须执行数据集大小变化的批量插入操作(因此每次行数都会改变)。我想知道,假设这些查询是参数化的,批量插入查询是否会被缓存/重用?所以基本上我想知道MySQL是否足够聪明,可以看到这些插入都是相同的并缓存单个插入查询(无论是每行插入还是一行多行)?然后重用优化的缓存查询?
只是为了让您更多地了解我们谈论的数据量,它大约有 500-600 批批量插入,并且每个批量插入都有未知数量的要插入的行(例如,它可能在 1 到 100000 之间)。他们一个接一个地被处决。
那么该批量插入会被缓存和重用吗?如果不是,将批量插入拆分为小批量(例如具有 X 行的单个 INSERT 查询)会改变它吗?
我现在不是在寻找另一种方法。简单地说,因为考虑到应用程序的编写方式是不可能的,所以我只限于参数化与非参数化查询以及一个批量插入与多个批次。然后,对于我拥有的每个“对象”,这被称为 X 次,就像我已经说过的那样,甚至可能是 500 或 600 次(但我现在无法更改)。
编辑
我认为这个描述可能很模糊,所以这里是一个列表:
- 进入对象的循环迭代
- 标识要为该对象插入的数据
- 创建批量插入查询(当前未参数化,但我想更改它)
- 执行批量查询
- 转到另一个迭代
所以我现在真正能改变的是第 3 点和第 4 点。