sql >> データベース >  >> RDS >> Sqlserver

CHARINDEX と LIKE 検索のパフォーマンスが大きく異なるのはなぜですか?

    正解を見つけるのが難しく、SQL Server 2012 実行計画の出力で問題を指摘されたので、私は自分の質問に答えます。元の質問でわかるように、表面上はすべて問題ないように見えます。これは SQL Server 2008 です。

    2012年に同じクエリを実行すると、 CHARINDEX で警告が表示されました クエリ。問題は - SQL Server が型変換をしなければならなかったことです。 住所1 VarChar です クエリには Unicode または NVarChar である N'1124' があります .このクエリを次のように変更すると:

    SELECT * FROM LOCAddress WHERE (CAST(CHARINDEX(LOWER('1124'), LOWER([Address1])) AS int))   

    LIKE と同じように実行されます クエリ。そのため、Entity Framework ジェネレーターによって引き起こされた型変換が、この恐ろしいパフォーマンスの低下を引き起こしていました。



    1. Webサーバーにファイルを保存する安全な方法は?

    2. SQLのみを使用した基数36から基数10への変換

    3. 秒を日、時間、分、秒に変換する(MySQL)

    4. HttpHandlerを使用したデータベース化された画像のストリーミング