過去の桐井戸端BBS (桐ver.8) |
3216 | 桐V8のINDX | 初心者 | 1999/11/9-13:52 |
どうも、何度もすいません。 桐8のINDXについてなんですが、 例えば、[年][月][日][年月日]の4つがあるとします。 [年月日]の項目計算式に [年]*10000+[月]*100+[日] を設定したとします。 INDX {[年]昇順,[月]昇順,[日]昇順} INDX {[年月日]昇順} どちらでINDXを定義しても検索、絞り込み等 は速度はかわらないのでしょうか? 桐5の時は第1キーしか効かなかったと思うのですが、 桐8でも同じでしょうか? | |||
3218 | Re:桐V8のINDX | 佐田 守弘 | 1999/11/9-21:48 |
記事番号3216へのコメント 初心者さん 表の索引(インデックス)の仕組みの詳しい事は、私も知っているわけではあり ませんが、インデックスを付けた場合の表ファイルのサイズの増え方から見る と、インデックスに指定した項目をそのままインデックスの値に使っている様 に見えます。もちろん検索を行うためのツリー構造は作っているのだろうと思 います。 そして、[年][月][日]の3項目でインデックスを作った場合には、この3項目 をつなぎ合わせて、インデックスデータとしていると推定します。 同じレコード数の時に、インデックスを使った検索速度には、インデックスに 抽出されるデータのサイズが影響すると考えます。 ここで、[年][月][日]のインデックスは、6バイトです。一方、[年月日]は、 4バイトですから、こちらの方がデータが短くなります。数値型の場合には、 バイト数が可変ですが、概ね8バイト程度すれば、長くなります。 この程度の違いであれば、検索速度にはほとんど影響しないと考えます。 >桐5の時は第1キーしか効かなかったと思うのですが、 の質問の意味は何でしょうか。 [年][月][日]の3項目でインデックスを作ってあるのに、[月]で検索すると遅 いというのであれば、当然の事です。このインデックスは、[年]、[月]、[日 ]の順序で組み合わせたインデックスであり、[月]のインデックスではないか らです。 佐田守弘(KS-00119) | |||
3220 | Re:桐V8のINDX | 初心者 | 1999/11/10-06:53 |
記事番号3218へのコメント >>桐5の時は第1キーしか効かなかったと思うのですが、 > >の質問の意味は何でしょうか。 どうもご返事ありがとうございます。 説明不足ですいません。 例えば、1999年11月のデータを全て選択する場合に、 ・パターン1 INDX [年]昇順,[月]昇順,[日]昇順 絞り込み [年]=1999,[月]=11,[日]{>0,<32} ・パターン2 INDX [年月日]昇順 絞り込み [年月日]{>19991100,<19991132} 以上の具合です。桐V5の時はレコードが増えると パターン1の方が圧倒的に早かったと記憶してるのですが。 | |||
3368 | 桐V8のINDX | 佐田 守弘 | 1999/11/17-19:24 |
記事番号3220へのコメント 初心者さん >・パターン1 >INDX [年]昇順,[月]昇順,[日]昇順 >絞り込み [年]=1999,[月]=11,[日]{>0,<32} のインデックスは、年、月、日それぞれ別々のインデックスですか、それとも3項目で 作った1つのインデックスですか。3項目を指定した1つのインデックスでは、この種の 絞り込みには効果がないと思います。なぜなら、このインデックスでは月や日での検索が できないからです。 >・パターン2 >INDX [年月日]昇順 >絞り込み [年月日]{>19991100,<19991132} は、検索する項目とインデックスが一致してますから、高速に検索が行えます。 もしパターン1で3つのインデックスを作ったとしたら、この方が少し速いと思います。 やや重箱の隅ですが、 >パターン1の方が圧倒的に早かったと記憶してるのですが。 ですが、私の推定ではパターン2の方が速くなると思うのですが。 佐田守弘(KS-00119) |