最新活动:电脑PC端+手机端+微网站+自适应网页多模板选择-建站388元起价!!!
当前位置:主页 > 网站建设 > SQL参数化查询的另一个理由 命中执行计划建站知

SQL参数化查询的另一个理由 命中执行计划建站知

时间:2023-05-23 12:05:23 阅读: 文章分类: 网站建设 作者: 建站小能手

导读:1建站知识为了提高数据库运行的效率,我们需要尽可能的命中执行计划,这样就可以节省运行时间seo网站优化培训网站建设多少钱。

seo网站优化培训网站建设多少钱1概述 SQL语言的本质就是一串伪代码,表达的是做什么,而不是怎么做的意思。如其它语言一样,SQL语句需要编译之后才能运行,所以每一条SQL是需要通过编译器解释才能运行的(在这之间还要做SQL的优化)。而这些步骤都是需要运行成本,所以在数据库中有一个叫做执行计划的东西,编译器会将编译过后的SQL存入执行计划当中,当遇到同样的SQL时,就直接调用执行计划来执行,而不需要再次编译。 通过对上面执行计划的认识,为了提高数据库运行的效率,我们需要尽可能的命中执行计划,这样就可以节省运行时间。 2相关SQL 2.1查看当前数据库中所有的执行计划:

复制代码 代码如下:

SELECT cp.usecounts AS '使用次数' ,objtype AS '类型' ,st.[text] AS 'SQL文本' ,plan_handle AS '计划句柄' FROM sys.dm_exec_cached_plans cp CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st WHERE st.text not like '%sys%'

2.2删除执行计划

复制代码 代码如下:

--删除所有计划 DBCC FREEPROCseo网站排名优化软件CACHE

2.3测试脚本(创建员工表,并向其插入1000条数据)

复制代码 代码如下:

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Employee]')) DROP TABLE [dbo].Employee GO --人员表 CREATE TABLE dbo.Employee ( id int, name nvarchar(50) ); --插入测试数据 DECLARE @I INT=0,@ENDI INT=1000; WHILE(@I<@ENDI) BEGIN SET @I+=1; INSERT dbo.Employee(id,name) VALUES(@I,'蒋大华'+CAST(@I AS NVARCHAR(20))); END;

3测试执行计划

3.1 先执行删除所有执行计划,然后执行SELECT * FROM Employee ,最后查看执行计划(2.1中的查看执行计划脚本)如下图

即SQL SERVER会为每一条SQL建立一个执行计划,并将它缓存起来

3.2 再运行一次SQL: SELECT * FROM Employee,并查看执行计划

可以看到这个计划的重用次数为2,即这个计划被重如何seo优化推广网站用了;

3.3 修改SQL:SELECT * FROM Employee(在SELECT后多加一个空格),执行并查看执行计划

结果又新添加一个执行计划,即SQL SERVER认为这是两个不同的SQL语句并分别建立了执行计划;

4重用执行计划——使用参数化查询方法

4.1 未参数化SQL

复制代码 代码如下:

string selectCmdText = string.Format(@"SELECT * FROM Employee WHERE",” 蒋大华1”); SQLHelper.ExecuteNonQuery(SQLHelper.DefaulConnectiontString, System.Data.CommandType.Text, selectCmdText, null);

查看执行计划:

即当执行一个未参数化SQL时,SQL SERVER需要先将其转换成一个参数SQL并执行它。一共需要两执行计划

关键词标签: 理由 SQL 参数

声明: 本文由我的SEOUC技术文章主页发布于:2023-05-23 ,文章SQL参数化查询的另一个理由 命中执行计划建站知主要讲述理由,参数,SQL网站建设源码以及服务器配置搭建相关技术文章。转载请保留链接: https://www.seouc.com/article/web_5611.html

我的IDC 网站建设技术SEOUC.COM
专注网站建设,SEO优化,小程序设计制作搭建开发定制网站等,数千家网站定制开发案例,网站推广技术服务。
  • 5000+合作客服
  • 8年从业经验
  • 150+覆盖行业
  • 最新热门源码技术文章