- ベストアンサー
遅くならない検索方法
初歩的な質問ですが、よろしくお願い致します。 あるテーブルで、更新フラグが0のものを検索して ループで処理を行うプログラムを作りました。 その際、更新フラグは1でUPDATEをします。 データは日々増えていきます。 また、既存のデータも変更があった場合には、 (別プログラムから)更新フラグが0戻されます。 このままだと検索スピードがだんだん遅くなると思われますが、 検索スピードが遅くならないような方法を教えて下さい。 よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
処理対象のテーブルは一つですか? レコード長はどれくらいでしょう? 現在の件数とこれからの増加の見込みは? 検索・更新処理は一日のうちどれくらい実行されますか? 検索・更新の対象になるのは全体の件数のうち何割ぐらいですか? もし、検索・更新の対象になるのが全体のうち極少数なら、そのフラグ項目にインデックスを張れば検索は速くなります。一方、それなりの割合になるのなら、別なアプローチが必要です。 たとえば、年月単位にデータが蓄積されていくデータの場合、テーブルを年単位でパーティション分割するという手段もあるかもしれません。
その他の回答 (2)
- taka451213
- ベストアンサー率47% (436/922)
回答No.3
こんばんは。 >更新フラグが0のものを検索して 0のものを1にするだけなら、 update テーブル set 更新フラグ=1 でいいんじゃ? where句も要らないような・・・。
- marutone
- ベストアンサー率40% (70/174)
回答No.1
更新フラグにインデックスを貼るのが最適ではないでしょうか。