国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

[20140217]執(zhí)行計劃從參數(shù)化

2024-07-21 02:50:56
字體:
供稿:網(wǎng)友
[20140217]執(zhí)行計劃從參數(shù)化

背景:

今天在群里發(fā)現(xiàn)在討論,只要sql語句有空格,就會生成另外一個執(zhí)行計劃。一直沒有對這個做過check。

環(huán)境:

sql server 2008r2,northwind 數(shù)據(jù)庫 代碼導(dǎo)入

測試:

測試腳本1,用于查看生成的執(zhí)行計劃,并清除計劃,可以看得清楚一些:

SELECT * FROM sys.dm_exec_cached_plans a    CROSS APPLY sys.dm_exec_sql_text(a.plan_handle)    CROSS APPLY sys.dm_exec_query_plan(a.plan_handle)    SELECT * FROM sys.dm_exec_query_stats a    CROSS APPLY sys.dm_exec_sql_text(a.sql_handle)    CROSS APPLY sys.dm_exec_query_plan(a.plan_handle)    DBCC freePRoccache    

測試腳本2:

SELECT * FROM  dbo.Orders  WHERE OrderDate >'19900101'

測試語句3:

SELECT * FROM  dbo.Orders  WHERE OrderDate >                   '19900101'

很明顯能夠看出測試腳本2和3的區(qū)別。

刪除除了orders上除了聚集索引之外的所有索引,然后運行以上腳本,發(fā)現(xiàn)被參數(shù)化了,并用xml查看執(zhí)行計劃:

SELECT * FROM  dbo.Orders  WHERE OrderDate >'19900101'SELECT * FROM  dbo.Orders  WHERE OrderDate >                   '19900101'(@1 varchar(8000))SELECT * FROM [dbo].[Orders] WHERE [OrderDate]>@1(@1 varchar(8000))SELECT * FROM [dbo].[Orders] WHERE [OrderDate]>@1

StatementOptmLevel="TRIVIAL"

之后我們隨便創(chuàng)建一個索引,我就用orders表中有的一個索引:

 CREATE  INDEX "CustomersOrders" ON "dbo"."Orders"("CustomerID")

然后再運行測試腳本,并用XML方式查看執(zhí)行計劃:

SELECT * FROM  dbo.Orders  WHERE OrderDate >'19900101'SELECT * FROM  dbo.Orders  WHERE OrderDate >                   '19900101'SELECT * FROM  dbo.Orders  WHERE OrderDate >                   '19900101'SELECT * FROM  dbo.Orders  WHERE OrderDate >'19900101'

StatementOptmLevel="FULL"

結(jié)論:

這里的測試結(jié)果,是否被參數(shù)化和索引有關(guān),和語句級別有關(guān),如果為TRIVIAL就會執(zhí)行簡單參數(shù)化,如果為FULL就不會執(zhí)行簡單參數(shù)化。

但是我翻閱了一下我手頭上的資料并沒有發(fā)現(xiàn),對這個現(xiàn)象的說明。

向知情者請教

閱讀:

文章http://blogs.msdn.com/b/psssql/archive/2013/12/04/how-simple-parameterization-work.aspx


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 商丘市| 湖口县| 江安县| 蓬安县| 历史| 栾城县| 宝兴县| 苍梧县| 石林| 绥阳县| 太仓市| 合阳县| 西藏| 麻阳| 侯马市| 山东省| 天长市| 东阿县| 古交市| 乌审旗| 通道| 托里县| 沙坪坝区| 吉木乃县| 思南县| 新巴尔虎右旗| 儋州市| 阳泉市| 巴林左旗| 寻乌县| 宣城市| 平舆县| 大足县| 海原县| 陵水| 贵州省| 沁阳市| 新巴尔虎左旗| 元朗区| 兴国县| 泉州市|