問題タブ [bitmap-index]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1248 参照

performance - ディメンション テーブルに行を挿入すると、Oracle サーバーがハングする

2 つのテーブルがあります。1 つ目は約 1 億行のファクト テーブルです。もう 1 つは、約 100 行しかないディメンション テーブルです。クエリを最適化するために、ファクト テーブルにビットマップ結合インデックスを作成しました。

ただし、ディメンション テーブルにいくつかの行を挿入すると、データベースがハングします。

何が原因か誰か知っていますか?

0 投票する
2 に答える
8885 参照

oracle - Oracle XE でビットマップ インデックスが有効になっていない

Oracle 10g XE (エクスプレス版) を使用しています。ビットマップ インデックスを作成しようとすると、エラーが発生します

ORA-00439 機能が有効になっていません: ビット・マップ索引

この問題を解決してビットマップ インデックスを作成するにはどうすればよいですか?

0 投票する
1 に答える
109 参照

database - 特定の列のすべてのビットマップ インデックスの圧縮サイズは、最大でテーブルのサイズに比例しますか?

Daniel Lemire の投稿 The Mythical Bitmap Index ( http://lemire.me/blog/archives/2008/08/20/the-mythical-bitmap-index/ ) を読んでいて、その投稿で彼は次のように述べています。

ビットマップ インデックスの圧縮サイズは、多くてもテーブルのサイズに比例します。個別の値の数に関係なく!

彼がこの値をどのように計算したかを理解するのに苦労しています。

長さ N の Run-Length-Encoded テキストの最悪の場合のスペース使用量は、N (2N?) に比例するため、O(N) であることを私は知っています。

また、特定の列のビットマップ インデックスの数の最悪のケースは、列のカーディナリティが N の場合であり、N はテーブル内のレコードの数であることも知っています (したがって、すべてのレコードがその特定の列で一意の値を持つようになります)。 . これは、N 個のビットマップ インデックスがあることを意味します。

ただし、ビットマップ インデックスの最悪の場合の仮定の下では、各ビットマップ インデックスは、ランレングス エンコードされると、一定のスペース使用量になります。これは、いくつかのゼロ、1、それに続くいくつかのゼロ、つまり O(1) になるためです。

したがって、最高カーディナリティ N の下でのすべてのビットマップ インデックスの合計スペース使用量は、ちょうど N x O(1) = O(N) になります。

ただし、この特定の計算から、考えられるすべてのケースの最悪のケースにどのように進むのでしょうか? 私が説明したカーディナリティ = N のケースが、すべてのビットマップ インデックスを合計した最悪のケースのスペース使用量であることは明らかではありません。

テーブル内の列に対して、ランレングスでエンコードされたすべてのビットマップ インデックスを合計した場合の最悪の場合のスペース使用量をどのように計算しますか?

0 投票する
1 に答える
180 参照

arrays - ビットマップ インデックス検索結果の配列:一定時間内にゼロ以外の要素のインデックスを見つける?

私が理解している限り、ビットマップ インデックス検索は、以下のように 0 と 1 の配列を返します。

[0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0]

配列内の各インデックスは、他の配列内のデータベース内のレコードにマップされるため、結果を取得するには、結果配列内の非ゼロ要素のインデックスを見つける必要があります。

私が理解できないのは、これらのインデックスを一定時間でどのように見つけるのですか? 私が考えることができる最良のアルゴリズムは、配列内の各要素を調べて、それがゼロでないかどうかを確認し、それがゼロでない場合は、その要素のインデックスを別の場所に書き込むことです。ただし、これは配列内のすべての要素を順番に見ることを意味し、これは線形時間です。したがって、結果を返すのにかかる時間は結果配列のサイズに比例します。これは、テーブル内の行の総数と同じです。

ただし、私が読んだビットマップ インデックスの論文では、クエリ時間はヒット数にのみ比例し、テーブル内の行の総数には比例しないことが示唆されているようです。参照:

http://crd-legacy.lbl.gov/~kewu/ps/LBNL-59952.pdf

私は何かを誤解しましたか?ビットマップ インデックス検索の結果は、配列としてではなく、非ゼロ要素の一定時間検索を可能にする他のデータ構造として表示されますか?

0 投票する
2 に答える
9299 参照

postgresql - postgresql でビットマップ インデックスを作成する方法は? (ビットマップインデックスもありますか?)

私は少なくとも1時間は「グーグル」でしたが、postgresqlでビットマップインデックスを作成する方法を見つけることができませんでした.

0 投票する
1 に答える
349 参照

sql - PostgreSQL: 同じインデックスで交差するインデックス スキャン

この問題を解決しようとしています: Sql: 特定のアイテムのセットを含むすべてのバスケットを選択します

言い換えれば、テーブルがあります:

itemIdはインデックス化されています。

itemId=2でスキャンを実行すると、次のようになります。

itemId=4でスキャンを実行すると、次のようになります。

これらの 2 つのスキャンを交差させて取得できますか?

ビットマップ インデックスなど、いくつかの PostgeSQL 高度なインデックス作成技術を使用していますか?

0 投票する
4 に答える
743 参照

database - ジョブを使用して毎日リロードする Oracle 11 のテーブル列にビットマップ インデックスを作成できますか

データウェアハウスから毎日スケジュールされたジョブを使用してロードされるクライアントに関する情報を格納するテーブルがあります。そのテーブルには 100 万を超えるレコードがあります。値の数が限られているため、Country 列に BitMap インデックスを定義したかったのです。データを毎日削除してテーブルに再ロードすると、インデックスに影響がありますか。読み込みのたびに明示的にインデックスを再構築する必要がありますか?