mysql的预编译的实际意义

请问一下,mysql的预编译是针对session的,如果是断开连接,再执行的话,又要重新预编译了。但是我们普遍的场景都是每次执行完都是断开连接的,那岂不是这个预编译的意义不大?还是说这个预编译针对批量操作的时候(不是频繁操作)才有意义?(即使有数据库连接池,也是有很多connection的)

预编译是防止恶意sql注入

1.一个程序,是直接运行编译好的文件好些呢,还是在运行时编译运行好些呢?
2.mysql的预编译,可以提前将sql格式固定,防止注入sql脚本,如delete语句,或删除表字段都是有可能的,

第一点:如果使用连接池的话,连接是不会断开的,当预编译执行完,是失去了连接的使用权。
第二点:如果再次执行,预编译的内容不可能每次都是相同的,所以必须再次进行预编译

1.嗯嗯,但是连接池里面也有百来个链接,所以每次从连接池里面取出来的链接很大可能都不是同一个
2.预编译在提高性能这点上,就是为了参数化查询的时候,会缓存一个模板化的sql语句,下次还有一样的sql模板查询(只是参数不一样)的话,就可以
直接执行之前预编译过的sql而不用重新编译了。如果是不一样的sql语句,那当然是必须重新预编译的。只是为什么mysql的预编译缓存不是全局的,而
是绑定session的。(这里不谈预编译防止SQL注入)

prepare和exec使用相同的conn是可以实现的,通过连接池。