0

このWHEREINを多くの選択に分割することで、全体的なパフォーマンスが向上しますか?

SELECT aField FROM aTable WHERE objectId IN (0,1,2...999) * many

巨大なWHEREobjectIdIN(700kアイテム)がある場合と比較して。

編集 - -

私がメモリに持っているobjectIdsのリストで、70万個ものアイテムになる可能性があります。それらは連続的である可能性がありますが、非常にありそうにありません。where句のフィールド(この場合はobjectId)にインデックスが付けられているかどうかも決定されません。

WHERECLAUSEのみを渡すことができるサードパーティアプリケーションは、現在OracleDBを使用しています。他のタイプのDBに接続するオプションもありますが、私が開発しているプラ​​グインのユーザーベースは主にOracleDBに対して機能します。

4

2 に答える 2

1

読みやすく、デバッグが難しいので、どちらが速いかは興味深いです。通常、ObjectIDのリストを使用してオプションを指定しますが、このような大量のデータを転送するにはパフォーマンスも低下します。両方のバリアントを比較できます。 DBMSに応じてExplainプランを使用します。

于 2013-02-01T09:20:58.690 に答える
1

70万アイテムも?その場合は、これらを別のテーブルに格納し、JOIN代わりに使用することを真剣に検討します。objectIdがインデックス付きの外部キーである場合は、パフォーマンスが大幅に向上します。

于 2013-02-01T09:45:04.313 に答える