私はPostgreSQLを使用しています。Postgresはtext/varcharカラムのインデックスを取得しません
# CREATE INDEX sampleidx ON fake_organizations (objectable_type) ;
CREATE INDEX
フィールドobjectable_type
がvarchar
の種類があります:私は指定された列のインデックスを作成しました。フィールドでレコードを選択すると、明示的な型キャストでSeqScan
が使用され、インデックスは取得されません。カラムはtext
のタイプを有する場合
# explain analyze select * from fake_organizations where objectable_type = 'Lot' LIMIT 10;
QUERY PLAN
----------------------------------------------------------------------------------------------------------------------
Limit (cost=0.00..2.01 rows=10 width=493) (actual time=0.001..0.001 rows=0 loops=1)
-> Seq Scan on fake_organizations (cost=0.00..11.88 rows=59 width=493) (actual time=0.000..0.000 rows=0 loops=1)
Filter: ((objectable_type)::text = 'Lot'::text)
Planning time: 0.765 ms
Execution time: 0.027 ms
(5 строк)
同じケースが、型キャストせずに起こっています。
質問はなぜですか?
テーブルには何行ありますか? – joop
@ jaop on test env戦闘中env〜10M。 –