1

私たちのコードは C で書かれており、DB は Informix です。ESQL プログラムでコードの最適化を行っているところ、次のクエリが見つかりました。

UPDATE [TABLE] SET [PRIMARY KEY COLUMN] = [NEW KEY] WHERE COL = ? または COL = ? ...

where 句の列数は動的に準備されます。where 句の準備を停止して更新を実行し、戻って残りの準備を開始する上限カウント チェックがあります。UPPER_MARK は「30」です

if ( where_parameter_count >= UPPER_MARK )
__ update を実行
__ __ clean_and_continue; /* 準備を再開します */__

WHERE .. OR を WHERE ... IN に置き換えることを考えました

UPDATE [TABLE] SET [PRIMARY KEY COLUMN] = [NEW KEY] WHERE COL IN (?, ? ...)

これは「どこか」よりも高速ですか?

4

1 に答える 1

3

どちらの構文も、クエリオプティマイザに関する限り同じものに解決されます。違いはありません。

リスト内アプローチの唯一の利点は、述語を追加してもロジックが変更されないことです。

x IN (a, b) AND y = z

x = a OR x = b AND y = z

同じことではありません

于 2011-09-12T07:07:41.857 に答える