私はユーザテーブルを持つpostgresqlデータベースを持っています。各ユーザは(ユニコードで)名前を持っています。名前に少なくとも1つのヘブライ文字が含まれているすべてのユーザーを検索したいと思います。私はregexを使って考えました。ヘブライ語の名前を持つすべてのレコードを見つける
select * from users
where name ~ '[א-ת]';
正規表現より効率的なアプローチがありますか?私は名前の列にBツリーのインデックスを持っています。ディスクサイズに関して@FuzzyTree
B-tree GIST GIN
user 0.04 0.04 0.03
sys 0.02 0.04 0.01
total 0.06 0.08 0.04
によってsuggestedとしてpg_trgm
モジュールと異なるインデックスを使用
更新
は、GINインデックスはGISTの一方の0.2Xおよび0.8XのありますBツリー。したがって、少なくとも私のユースケースでは、ここに勝者があります。 YMMV(例:インデックスの作成と更新をベンチマークしていない)バージョン:postgres 9.6。
あなたは私たちが望む、すでに何をすべきであり、あなたは、いくつかのコードスニペットを提供する際、より便利な答えを得る可能性があること、以上の2K担当者で、さあご覧ください。 – Jan
@Jan、何のためのスニペットですか?私は*何をするか*どのように何をするか*求めています。私が現在のregexコードのスニペットを追加することができます。 – dimid