PostgreSQLには次のテーブルがあります。
CREATE TABLE index_test
(
id int PRIMARY KEY NOT NULL,
text varchar(2048) NOT NULL,
last_modified timestamp NOT NULL,
value int,
item_type varchar(2046)
);
CREATE INDEX idx_index_type ON index_test ( item_type );
CREATE INDEX idx_index_value ON index_test ( value )
私は次の選択を行います:
explain select * from index_test r where r.item_type='B';
explain select r.value from index_test r where r.value=56;
実行計画の説明は次のようになります。
index_test rのシーケンススキャン(コスト=0.00..1.04行=1幅=1576) フィルタ:((item_type):: text ='B' :: text) '
私が理解している限り、これは全表スキャンです。問題は、なぜ私のインデックスが使用されないのかということです。
おそらく、その理由は、テーブルの行が少なすぎるためですか?私はそれらを20個しか持っていません。インデックスの問題を確認するためにテーブルにランダムデータを簡単に入力するためのSQLステートメントを提供していただけますか?
私はこの記事を見つけました:http://it.toolbox.com/blogs/db2luw/how-to-easily-populate-a-table-with-random-data-7888、しかしそれは私にとってはうまくいきません。ステートメントの効率は重要ではなく、単純さだけが重要です。