質問です。
テーブルのレコード数の増加に伴い、テーブルのExtentの数が200を超えてしまいました。検索のスピードもどんどん遅くなってきています。
このようにExtentが増加することによりが検索スピードに影響を与えるものでしょうか?

また、検索スピードを上げるためにはどうしたらよいのかも教えてください。索引をはったり、Analyzeを実行したりしようかとも考えていますが、どのような方法が有効であるのか分かりません。

よろしくお願いします。

以上

このQ&Aに関連する最新のQ&A

A 回答 (4件)

Extentが増えると、データが断片化されるため、当然、スピードは低下します。



検索スピードを上げる方法としては、大きく次のようになります。

索引のチューニング
SQL文のチューニング
ディスクI/Oのチューニング
メモリーのチューニング
OSのチューニング

となります。(上に行くほど効果が大きい)
基本は、索引とSQL文のチューニングになりますが、3番目のディスクI/OのチューニングがExtentの問題になります。
特に、全件検索が多く(索引を使えない検索)削除などが多い場合に有効になります。その場合は、基本的には、テーブルの再作成(テンポラリテーブルを使ってする方法)があります。
私も、削除が非常に多いテーブルに対し、これを行うことで10倍ぐらいのパフォーマンスを得ることができました。
    • good
    • 0
この回答へのお礼

ありがとうございました。
検討してみます。

お礼日時:2001/08/03 09:52

インデックスをはるのは検索に関しては効果的ですが、有効なはり方をしないと更新のスピードに影響を与えますのでご注意下さい。

    • good
    • 0

バージョン8以上のことは分からないのですが、一番始め


に考えるのは、やはりインデックスをはることでしょう。

うまくやれば、検索時間を数分の1から数十分の1に縮め
ることができます。

RDBに精通した人がやるのが望ましいのですが、原始的
(?)には、速くしたいSQL文のWHERE句にでてくる項目
を、上から順にインデックスのCREATE文に書いてしまえ
ばいいでしょう。

あまり多くの項目にインデックスの項目をはると、insert
文が遅くなるかもしれませんが、その時はあまり値の変化
しない項目(例えば「性別」のような)をインデックスか
ら外していけばいいと思います。

インデックスの効果があまりないような場合は、専門家に
依頼するのが一番でしょう。

副問い合わせを使いたくなるような複雑な検索では、SQL
文の巧拙によっても検索時間がまったく変わりますが、
書き直すと再テストが必要になってしまいますので、これ
は質問の範囲外でしょうね。
    • good
    • 0
この回答へのお礼

ありがとうございました。
やはりインデックスが有効なのですね。
検討してみます。

お礼日時:2001/08/03 09:53

一般的な傾向として、レコード数が増加すればする程、検索のレスポンスは


悪化する傾向があります。これはExtentが増加しないように大きめの
テーブルスペースを確保していても発生する現象です。

Oracleのバージョンが書かれていないので、Oracle8以上を前提にコメント
しますが、データ量が非常に大きいテーブルをアクセスする場合、データを
複数のテーブルスペースに分割して格納する方法(パーティションテーブル)
が一番効果があります。

もちろん、それ以前に最適なインデックスを作成するなどの一般的なチュー
ニングも必要です。
Oracleのチューニングのスキルがある人がOracleのログを解析すれば、
どういうチューニングが効果的かはだいたい判別できます。

ご自分でスキルが足りなければ、Oracleに精通したSI会社にチューニング
の部分を外注することをオススメします。
    • good
    • 0
この回答へのお礼

ありがとうございました。
検討してみます。

お礼日時:2001/08/03 09:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

このQ&Aと関連する良く見られている質問

Q同一テーブルの別レコードの内容表示

SQLについて質問させてください。

年 月 売上
------------
2003 4 100
2003 5 200
2002 4 300

上記のようなテーブルがあるばあい

年 月 売上 前年
-----------------
2003 4 100 300
2003 5 200 0
2002 4 300 0

このような結果(前年、同月の売上の数値を
前年列に表示)を得るための View を
作成したいのですが、どうしたら
よいでしょうか。
データベースは Sybase です。
よろしくお願いいたします。

Aベストアンサー

 
自己結合を使えばできるでしょう。

SELECT ・・・・ FROM A表 Left Join A表 As 前年
ON A表.年月 = 1年加算(前年.年月)

ポイント(注意点)は

(1) Inner Join ではなく、Left Joinを使用する。(前年のレコードがない場合でもレコードを抽出するため)
(2) 同一の表を別の表として扱うため、エイリアスする。

(3) 結合条件は、単純に A表.年月 = 前年.年月 ではなく、1年加算(または減算)した値で結合する。

日付を加算する関数は、DBMSに依存すると思いますので、ご使用のDBMS(Sybase)でご確認ください。
 

Qアクセスのレポートでレコード数をカウントしたい

お世話になります。
アクセスで、クエリで抽出した結果のレコード数をカウントし、レポートに出力させたいのですが、うまくいきません。
各クエリのレコード数が、レポートを見て分かればいいのですが、
出来ればXXXX/総レコード数XXXXという形で出力できれば尚嬉しいです。

宜しくお願いします。

Aベストアンサー

ごめんなさい。
コントロールボックスじゃなくてテキストボックスですね。
変な説明になってしまいました。

まず、必要に合わせてページヘッダー
又はレポートヘッダーにテキストボックスを作ります。
そのテキストボックスにカウント関数”=Count([****])”を入力し
****に詳細にあるフィールドを何でも良いので指定します。
(何を指定しても、レコード数は同じなので何でも大丈夫だと思います。)
そうすると、そのフィールドのレコード数が
カウントされて出てくると思うのですが。

braidalさんがどのようにレポートを作っているかが
分からないので、よく分からないのですが
総レコート数というのは、抽出する前のレコード数ということでしょうか?
でも、この場合最初にも書きましたが
クエリで既に抽出されたデータだけしか
レポートには出て来ていませんので
総数=抽出されたレコード数となります。

レポートでXXXX/総レコード数XXXXというのを
表示させる方法は、分かりません。
クエリで抽出をしていなければ
(全データを表示してレポートを作っている場合)
グループフッターでグループごとにカウントさせ(上記と同じ方法です)
またレポートフッターでカウントさせる方法は出来ますが。
もしかしたら、VBAなどで出来るかもしれません・・・

詳しい方法は、こちらを参考にしてみて下さい。
また、カウントと検索するとカウント関数のやり方も分かります。
http://www.mahoutsukaino.com/ac/ac97/basic/nyumon_r3.htm

ごめんなさい。
コントロールボックスじゃなくてテキストボックスですね。
変な説明になってしまいました。

まず、必要に合わせてページヘッダー
又はレポートヘッダーにテキストボックスを作ります。
そのテキストボックスにカウント関数”=Count([****])”を入力し
****に詳細にあるフィールドを何でも良いので指定します。
(何を指定しても、レコード数は同じなので何でも大丈夫だと思います。)
そうすると、そのフィールドのレコード数が
カウントされて出てくると思うのですが。

braidalさんが...続きを読む

Qoracleのanalyzeと処理時間について

Oracle9iを使用してシステム開発を行っています。
性能を向上させるため、大量のデータ追加を行った後の検索処理の際にanalyzeを実行することになりました。
しかし、いざanalyzeを実行しても検索時間が必ず短縮するわけではなく、analyzeをすることでかえって遅くなるときがありました。
これはどういうことが原因と考えられるでしょうか?

Aベストアンサー

analyzeは処理時間短縮のおまじないではないからです。

analyzeをする事で、それまでルールベースだった実行計画
がコストベースに変わったりした場合、オプティマイザは
統計情報を見て
「索引を使うべきか」「表をどの順番で結合するか」
などを判断します。

ルールベースでは必ず索引を使っていたのに、統計情報が
収集された事で索引を使うための閾値が変わり、全表走査
になる、と言った事はよくあります。

チューニングマニュアルをご確認ください。
手許になければOTNで。(登録無料)

オラクル技術者のためのダウンロード・掲示板・ドキュメント
http://otn.oracle.co.jp/

参考URL:http://otn.oracle.co.jp/

Q検索結果をテーブルに表示

Windows2000でアクセス2000を使用してます。
フォームから検索した結果をテーブルで表示って出来るのでしょうか?
もし、出来るのならどのようにして設定したら良いのでしょうか?
アクセス初心者です。宜しくお願いします。

Aベストアンサー

通常は車種データのキーかインデックスが付いているフィールドを抽出条件にするのが一般的です。
しかし各種要求に応じるためにはフォームフィルターを使った抽出の方がなれない人には扱いやすいと思います。抽出フォームにフォームフィルターを使って抽出条件を入力させて抽出する。見栄えはイマイチかも知れませんが表形式の抽出フォームに車種データを表示させる単票形式のフォームを開くボタンを付けておけばOKではないでしょうか。

QAccessのテーブル内のフィールド数

教えて下さい。

Access2003(2007)では、テーブル内のフィールド数が最大255となっていますが最大フィールド数255以上ある、Accessと同じようなものはあるのでしょうか?(OpenofficeのBase等)

他DBからテーブルをリンクテーブルで貼り付けているのですがフィールド数が255以上あり取り込み先のAccessではフィールド数をすべて表示できない状態です。

よろしくお願いします。

Aベストアンサー

MySQLは実質、項目数の制限がありません(サイズによる制限はあるが)。

ACCESSで255項目以上を扱う場合はテーブルを分けるしかないと思います。それに項目数が無制限だとしても1テーブルに100項目程度くらいにしたほうがいいですね。そのほうが管理しやすいと思います。


このカテゴリの人気Q&Aランキング

おすすめ情報