env: Windows
Server 2016
SQL Server 2016 SP2最近幫忙看報表語法,發現執行計劃常出現以下警告訊息:
Type conversion in expression ([i].[Item]=CONVERT_IMPLICIT(nvarchar(64),[XXXXX].[XXXXX],0)) may affect "SeekPlan" in query plan choice, Type conversion in expression ([i].[Item]=CONVERT_IMPLICIT(nvarchar(32),[XXXXX].[XXXXX],0)) may affect "SeekPlan" in query plan choice
造成這個原因是等號兩邊資料型態不一致的關係。
比對語法使用的實體TABLE欄位資料型態都是一致的,
以這次的例子發生的原因是宣告的variable table造成:
DECLARE @TESTTB02 TABLE(Item NVARCHAR(64));
DECLARE @TESTTB02 TABLE(Item NVARCHAR(32));
解決方式是將NVARCHAR改為VARCHAR,隱含轉換的警告就消失了。
DECLARE @TESTTB02 TABLE(Item VARCHAR(64));
DECLARE @TESTTB02 TABLE(Item VARCHAR(32));
沒有留言:
張貼留言