3

現在、SQL カーソルを使用してテーブルを検索し、別のテーブルを更新しています。多くのフレーズを含むテーブルがあります。これらのフレーズのいずれかが更新テーブルのいずれかの列に該当する場合は、別のテーブルを更新して 1 を設定します。カーソルと文字を使用してフレーズを探しています。カーソルに時間がかかっています。カーソルの代わりに何か他のものを使用できないかと思っています。ありがとう。私はSQLサーバーを使用しています。これがコードです

declare @word varchar(max)
    declare @aCursor cursor for
SELECT col from table
    open acursor
    fetch next from acursor into @word
    while @@fetch_status=0
    begin
SET @word = '' + @word + ''
UPDATE updatetable
SET updatecol = 'y'
FROM updatetable u, tableb b
WHERE u.id = b.id AND (CHARINDEX(@word, u.name) > 0 OR CHARINDEX(@word, u.city) >
    fetch next from acursor into @word
    end
    close acursor
    deallocate acursor
4

1 に答える 1

5

http://weblogs.sqlteam.com/jeffs/archive/2008/06/05/sql-server-cursor-removal.aspxをご覧ください。しかし、私はこの問題について完全に理解しました。個々の行の操作については、カーソルが進むべき道であり、パフォーマンスは他の方法とほぼ同じであり、読みやすさは他の方法よりも10倍優れているため、コードの保守がはるかに簡単になります。

しかし、私には十分な詳細がありません。更新ステートメントでこれを解決できない理由を理解しているようです。

于 2013-02-18T19:27:00.463 に答える