(服务器端)准备语句对MySQL 5.5+查询计划的影响

时间:2015-09-14 20:19:53

标签: mysql performance

所以,因为粗略的谷歌搜索没有透露任何启发性:

MySQL如何为Prepared Statement生成查询计划,例如在Connector / J for JDBC中实现的服务器端语句?具体来说,它是在编译SQL语句时生成它,然后在每次执行时重复使用它而不管参数如何,或者它是否会以与单独发出每个SQL查询所实现的相同方式实际调整计划?

如果确实碰巧“聪明”了,那么解释它是如何做到这一点会很棒(例如变量偷看)

1 个答案:

答案 0 :(得分:0)

几乎在所有情况下,执行语句时都会构建查询计划。在MySQL中(与竞争产品不同),构建计划的速度非常快,因此您不必担心它是否以任何方式进行缓存。

此外,但根据需要构建,查询中的不同值可能会导致不同的查询计划,从而加快执行速度。

(在极端情况下,我看到一个声明,使用不同的常量,有6个不同的查询计划。)