您的位置:首页 > 博客中心 > 数据库 >

SQLServer执行计划生成方式

时间:2022-03-14 18:40

说一点关于SQLServer 执行计划相关的东西吧,首先我不是DBA,这几年也做了一些关于SQL优化的东西,有一点自己理解的东西,说的不一定正确。 首先从应用程序传过来的T-SQL语句和存储过程的差异就是传过来的语句SQLServer会进行一次编译,而存储过程则是编译好的,执行时无需再次编译,等于就是一次编译多次执行,而传过来的SQL语句如果不是参数化查询的话不同的条件会生成不同的执行计划,举个栗子:SELECT * FROM dbo.Employee  WHERE ID = 1和 SELECT * FROM dbo.Employee  WHERE ID = 2 则会生成两个执行计划,等于说会把条件也作为语句存入到执行计划中,如果改为参数化查询就会只产生一个执行计划,下次在访问直接复用,之前项目中碰到过一次,由于是老项目,都是在程序中拼接SQL,时间长了就发现明明数据量不大的查询却要执行好久,通过跟踪才发现原来是执行计划存储的表过大,造成每次访问时先取相应的执行计划,从而造成性能上的浪费。

热门排行

今日推荐

热门手游