4

データベースから暗黙的な変換を排除しようとしています。

これは Char(10) であったため、UpdatedByID フィールドに以下の CAST ステートメントを追加しました。FROM ステートメントで INT に結合しています。しかし、私はまだ暗黙の変換を取得しています。明らかな何かが欠けているに違いない??

        SELECT DISTINCT ba.BookingID INTO #temp1
        FROM BookedItemsAudit_tbl bia  
        INNER JOIN BookingAudit_tbl ba ON bia.BookingAuditID = ba.BookingAuditID    
        INNER JOIN User_tbl u ON  u.UserId  = CAST(ba.UpdatedById AS INT)
        WHERE bia.BookedItemTypeId IN (1, 58, 60)   
        AND u.UserId = 5

ここにカットダウンスキーマがあります

BOOKINGAUDIT_TBL
Column_name     Type        Length
BookingAuditID  int         4
BookingID       int         4
UpdatedByID     CHAR        10
UpdatedBy       varchar     50
UpdatedDate     datetime    8
TotalMargin     money       8
BookingStatusId int         4

 USER_TBL
 Column_name    Type        Length
 UserId         int         4
 FullName       varchar     100
 UserName       varchar     20

このリンクの完全なクエリとスキーマ

SQLフィドル

ヒントが実行計画に表示されたときのエラーメッセージが添付されています

INT へのキャスト後の暗黙的な変換

4

1 に答える 1

6

警告は、暗黙的な変換ではなく、明示的な変換に関するものです。あなたが表示するツールチップは言及していませんCONVERT_IMPLICIT

CAST(ba.UpdatedById AS INT)として計画に表示され、CONVERT(int,ba.UpdatedById ,0)それについて警告しています(ba.UpdatedByIdでのインデックスシークを防ぎます)。

この警告が表示されないようにするには、スキーマを修正して、同じデータ型の列で結合する必要があります。

于 2013-03-06T12:55:29.697 に答える