0

特定の基準を満たすレコードのファイル名を取得する必要がありますが、実行時にクエリが非常に遅いことに気付きました。インデックスを追加しましたが、それでも非常に遅いです。どうすればパフォーマンスを改善できますか? DB2を使用しています。助けてください、ありがとう。

テーブル (FILE) (データ量 - 約 100000)

  • ファイル_ID
  • 名前
  • カテゴリー

インデックス (カテゴリ、ファ​​イル_ID)

テーブル (RECORD) (データ量 - 約 50000000)

  • RECORD_ID
  • データ
  • 日付を作成します
  • タイプ
  • ファイル_ID

INDEX(CREATE_DATE, TYPE, FILE_ID)

SELECT NAME 
FROM FILE
WHERE CATEGORY = ? AND 
      FILE_ID IN (SELECT FILE_ID FROM RECORD WHERE CREATE_DATE = ? AND TYPE = ? )
4

5 に答える 5

1

参加すると問題が解決するはずです。

また、遅いクエリのパフォーマンスを向上させるために、テーブルとインデックスを再編成 (REORG) する必要がある場合もあります。

于 2013-04-19T16:33:31.263 に答える
1

「テーブル ファイル」を where 句を使用して一時テーブルに配置すると、速度が向上することがあります...

例えば...

一時テーブルを作成し、テーブル ファイルからすべてのレコードを挿入します。そのテーブルをレコードに結合します

于 2013-04-22T09:34:17.263 に答える
1

テーブルを結合します。

select f.name
from f join record r on f.file_id = r.file_id
where f.category = ?
于 2013-04-19T03:18:02.143 に答える
1

INNER JOIN構文で試してください:

select file.name
    from file inner join record using(file_id)
where file.category_id=? and record.create_date=? and record.type=?

レコード テーブルの index(file_id, create_date, type) を使用します。

于 2013-04-19T03:18:53.150 に答える