有一个查询语句会经常调用,这个查询是使用Prepared Statements还是存储过程?Prepared Statements的并发效率比存储过程高?有一个业务涉及到多个表的不同查询,适合写成一个存储过程?什么时候该用存储过程?
解决方案
30
假如仅是个简单的SQL语句,则直接写SQL语句,即不用PREPARE也不用存储过程。 存储过程会比PREPARE要快一点,非常有限的一点。
无此定论。
不适合
非常复杂的逻辑,并且不希望有太多数据库访问上的压力。
10
1、语句就可以了
2、prepare statements并发不一定比存储过程高。
3、不适合
4、复杂逻辑,可以考虑存储过程。
2、prepare statements并发不一定比存储过程高。
3、不适合
4、复杂逻辑,可以考虑存储过程。
20
这些都没有定论。
但是可以肯定的时候,一般的动态语句的效率,都要比存储过程的效率高。
一般来说,预处理的语句都是动态拼接的语句,里面都包含了实际的值,虽然预处理是为了语句的重复使用,从而减少sql解析的开销,不过原因是是实际的语句,一般生成的执行计划效率比较高。
而存储过程本身就是有名字的,直接就可以复用,也就是 编译一次,多次运行,所以也减少了当并发高时,在解析sql上的开销,不过问题在于一般存储过程时通过参数传入值,然后再运行,所以在没有传入值时,存储过程已经编译好了,所以生成的执行计划一般比较折中,效率一般不会太差,也不是太好。