[解決済み] LOWER LIKE vs iLIKE
質問
次の2つのクエリコンポーネントのパフォーマンスはどのように比較されますか?
LOWER LIKE
... LOWER(description) LIKE '%abcde%' ...
アイライク
... description iLIKE '%abcde%' ...
解決方法は?
答えは、Postgres のバージョン、エンコーディング、ロケールなど多くの要因に依存します -。
LC_COLLATE
特に
裸の表現
lower(description) LIKE '%abc%'
は通常
description ILIKE '%abc%'
また、同等の正規表現よりも若干速くなります。
description ~* 'abc'
. これは、テストされた行ごとに式を評価する必要があるシーケンシャルスキャンでは重要です。
しかし
あなたの回答で示されたような大きなテーブルでは、確かにインデックスを使用します。任意のパターン(左寄せだけでなく)については、私は追加モジュールを使用したtrigramインデックスをお勧めします。
pg_trgm
. そうすると、秒ではなくミリ秒の話になり、上記の表現の違いは無効化されます。
GINとGiSTインデックス(を使用します。
gin_trgm_ops
または
gist_trgm_ops
演算子クラス) をサポートします。
LIKE
(
~~
),
ILIKE
(
~~*
),
~
,
~*
(およびいくつかのより多くのバリエーション)を同様にします。トリグラムGINインデックスで
description
(一般的にGiSTより大きいが、読み込みが速い)クエリは、以下のようになります。
description ILIKE 'case_insensitive_pattern'
.
関連する
Postgresのパターンマッチの基本。
前記トリグラムインデックスを扱う場合、それは 通常 の方が実用的です。
description ILIKE '%abc%'
また、大文字・小文字を区別しない正規表現演算子で(
%
のワイルドカードを使用します)。
description ~* 'abc'
のインデックスを作成します。
(description)
に対するクエリはサポートしません。
lower(description)
のようなものです。
lower(description) LIKE '%abc%'
その逆もしかり。
に対する述語で
lower(description)
専ら
の場合、エクスプレッションインデックスの方が若干有利です。
他のすべてのケースでは
(description)
をサポートするため、より望ましい。
両方とも
大文字小文字を区別する述語としない述語がある。
関連
-
[解決済み] pg gem をインストールしようとすると 'libpq-fe.h' ヘッダが見つからない
-
[解決済み] psql: FATAL: データベース "<user>" が存在しない
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] Swift Betaのパフォーマンス:配列のソート
-
[解決済み] なぜJavaでは2 * (i * i)の方が2 * i * iより速いのですか?
-
[解決済み] なぜ[]はlist()よりも速いのですか?
-
[解決済み] 文字列の最初の文字を大文字にする(最大限のパフォーマンスを発揮する)
-
[解決済み] PostgreSQL で "use database_name" コマンドを使用する。
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 実行時間(高速化)の計算方法
-
[解決済み] 効率的なアウトオブコアソーティング
-
[解決済み】インターネット接続が遅い場合のシミュレーション【終了しました
-
[解決済み】GHCコアの読み込み
-
[解決済み] t-sqlのクエリ実行にかかる時間の測定
-
[解決済み] SSLはどれくらいのオーバーヘッドを発生させるのですか?
-
[解決済み] Scalaのlazy valの(隠れた)代償は何なのか?
-
[解決済み] あなたが見た中で最も馬鹿げたペシミゼーションは何ですか?[閉店]
-
[解決済み] Haskellプログラムにおけるガベージコレクションの一時停止時間の削減
-
[解決済み] PostgreSQLのLIKEクエリのパフォーマンスのばらつき