電話フィールドが として保存されているPostgresテーブルがありますがvarchar(10)
、市外局番を頻繁に検索します。
select * from bus_t where bus_phone like '555%'
これらの検索を容易にするためにインデックスを作成したかったのですが、試行中にエラーが発生しました:
CREATE INDEX bus_ph_3 ON bus_t USING btree (bus_phone::varchar(3));
ERROR: 42601: syntax error at or near "::"
私の最初の質問は、これをどのように達成するかということですが、フィールドの最初の X 文字にインデックスを付けることが理にかなっているのか、それともフィールド全体にインデックスを付けることが同じように効果的であるのかについても疑問に思っています。