問題タブ [b-tree-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 投票する
1 に答える
1985 参照

postgresql - postgres の Explain の index および filter セクションのブール列

ブール列を持つテーブルがあります-"is_woman" bool DEFAULT true

この列(および年齢、町などの他のいくつか)のbtreeインデックスがあります-is_woman ASC NULLS LAST

この列に関するクエリがあります -is_woman IS FALSE

その結果、私は説明を得る:

is_woman 条件が 2 つあるのはなぜですか? 1 つはインデックス セクションに、2 番目はフィルターに?

更新しました

@dmitry の助けを借りて、私は 2 つの部分インデックスを作成しましis_woman is falseis_woman is true

Explain同じクエリの場合:

Bitmap Index Scan on is_woman_woman_idx (...) (actual time=469.446..469.446 rows=406867 loops=1) Index Cond: ((age >= 1) AND (town = 1)) Execution time: 1827.239 ms

セクションがなくFilter、このクエリはより高速に動作します。

  • 実時間2.227..2754.378469.446..469.446
  • 実行時間2792.804 ms1827.239 ms
0 投票する
1 に答える
197 参照

database - B ツリーと B+ツリー インデックスの違い

私は B+ Tree と B Tree を勉強しています。それについて 2 つのことを理解したいと思っています。

  1. B+ ツリー インデックスにより多くの検索キーを格納できるのはなぜですか? 私の推測では、その理由は、B+ ツリーのノードがデータではなくサブツリーを指しているためです。

  2. B+ ツリー インデックスでは機能しないデータの比較の種類はありますか、またはそれらすべて (=、>=、!=、<、<>...) を使用できますか?

0 投票する
0 に答える
85 参照

mysql - MySQL - PRIMARY KEY の使用 - UNIQUE INDEX 関連テーブルの多対多

幸せな日。

私は映画のデータベースを作成しています。すべての映画は、ユーザーごとに 1 票を受け取り、映画のように見える「良い、良い、または公正」を評価します。これらの投票は、ユーザーの ID を持つテーブル [movies_has_rating] に保存されます。誰が投票したか、投票の種類、および作成日とともに、ユーザーが映画に 2 回参加できるようにする必要があります。これは、ユーザーごとに 1 つの投票しか許可されていないためです。ただし、これは既に PHP と MySQL を使用して行っています。クエリ、MySQL から手動で追加する可能性がまだあり、これと同じデフォルトの MySQL を確立することもできます。私の質問は次のとおりです。

1)フィールドが[vote id][user_id]を主キーとして定義されている場合、たとえば、同じ映画に対してユーザーの 2 つの評価を避けることができます。

2)フィールドUNIQUE INDEX [vote id]および[user_id]が主キーとして既に定義されている場合は、フィールドに追加する必要があります。これには、主キーを定義するときにUNIQUE INDEXを使用する利点と違いがあります。

3) " BTREEまたはHASH "など、メソッドの種類をインデックスに指定する必要があります。

どうもありがとうございました。

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

mysql - MySQL は単一テーブルの RAM B+Tree のフットプリントを計算します (python data-struct との比較)

現在、Python でキャッシュしている以下のデータがあります。

データ文字列のサイズは ~87 バイトです。これを Python に最適に保存すると (dict を使用し、タイムスタンプを区切り文字付きの data-str の前に追加する)、エントリあたりの RAM コストは最大 198 バイトになります。これは、必要なキャッシュのサイズに対して非常に大きいです。

同じものをMySQLテーブルに保存して、RAMスペースを節約できるかどうかを確認したいと思います。そうしている間、私はこれを次のように保存します:

MySQL が InnoDB テーブルのインデックス (現在持っているもの) を RAM にロードすることを理解しています。したがって、id (一意)、タイムスタンプ、およびデータ文字列へのポインターは RAM に常駐します。

この新しいテーブルについてのみ、MySQL の B+Tree の完全な RAM 使用量 (つまり、メタデータを含む) を計算するにはどうすればよいですか?

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

postgresql - PostgreSQL インデックスの物理レイアウト

PostgreSQL の物理インデックス レイアウトがどのようになっているかを理解しようとしています。私が知ったのは、インデックスは B ツリー データ構造を持つ一連のページの一部として格納されるということです。バキュームがインデックスにどのように影響するかを理解しようとしています。そのサイズを抑えるのに役立ちますか?