0

いくつかの列を持つテーブルを作成しました。

マイテーブル

  • Column1 -> RecordId (int)
  • Column2 -> タイトル (varchar)
  • Column3 -> ショートネーム (varchar)
  • Column4 -> (varchar)
  • Column5 -> varchar

    ...

    ...

  • Column10 -> varchar

このテーブルを他のテーブルと結合していません。テーブルに 4 行のデータがあります。

特定の RecordId のタイトル、ショートネームをクエリすると、クエリが遅すぎるようです。ページの読み込みには約 7 秒かかります。

テーブルでインデックスを使用していません。テーブル/クエリのパフォーマンスを改善する方法を教えてください。

リストボックスにクエリ結果を表示するために、jsp から db 接続を作成しています。

私のコードは次のようになります- conn= DataObjectConnectionPool.getInstance().getConnection(); prepStmt = conn.prepStmt("RecordId=1 の MyTable からタイトル、ショートネームを選択");

4

3 に答える 3

0

4行のテーブルにインデックスを作成しても意味がありません。クエリの実行時間をdbmsで確認したい場合は、クエリの実行後にパッケージキャッシュからデータを取得します。

select num_exec_with_metrics, total_act_time,  pool_read_time
  from table(mon_get_pkg_cache_stmt(null,null,null,null))

そのテーブル関数には、さまざまなタイプの待機などを含む100個の他の列があります。

于 2012-11-02T01:14:04.437 に答える
0

RecordIdに主キーを定義する必要があります。

これには、その列にインデックスを作成するという副作用があります。

しかし

ページが 7 秒で読み込まれ、テーブルに 4 行のデータしかない場合、問題はほぼ確実に DBMS にありません。

于 2012-11-01T10:19:59.047 に答える
-1

基本的に、コードでこのSQLクエリを使用しています:

select title,shortname from MyTable where RecordId=1

データベース側からは、RecordID列にインデックスを作成してから runstats ==> を実行することで、クエリを高速化できます

create index MyIndex on MyTable (RecordID) Compress yes Allow reverse scans;
runstats on table Mytable and indexes all shrlevel change;
于 2012-11-01T10:14:39.943 に答える