预先编译生成执行计划,主要两个优势,一是防止sql注入,二是提高性能。
以jdbc为例,还加入了客户端prepared,这样整个服务端和普通状态没有任何区别,但是通过客户端也能起到防止sql注入的能力。
- 客户端开启prepared,不开启缓存:和普通状态没啥区别
- 客户端开启prepared,开启缓存:因为是本地缓存,所以相比不开启缓存提升非常少
- 服务端开启prepared,不开启缓存:性能最差,相比于普通状态需要频繁prepared
- 服务端开启prepared,开启缓存:性能最好,相同语句只需要一次prepared