![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
いつもお世話になっております。
テーブル同士のLIKE検索(前方一致)を行った場合、
INDEXが有効になりません。
LIKE検索文字列を固定にした場合は、INDEXが有効
になります。
テーブル同士のLIKE(前方一致)でINDEXを
有効にする手段をご教授頂けないでしょうか。
以下、実行結果です。
(1)LIKE検索文字列が固定
----------------------------------------------------------------------------
EXPLAIN
SELECT * FROM wk_dss_data WHERE sys_id LIKE 'M004964%';
----------------------------------------------------------------------------
Index Scan using i_wk_dss_data_02 on wk_dss_data (cost=0.00..5.25 rows=1 width=311)
Index Cond: (((sys_id)::text >= 'M004964'::character varying) AND ((sys_id)::text < 'M004965'::character varying))
Filter: ((sys_id)::text ~~ 'M004964%'::text)
(2)テーブル同士のLIKE検索
----------------------------------------------------------------------------
EXPLAIN
SELECT wk_dss_data.comp_id, wk_dss_data.user_id FROM wk_dss_data, t_update
WHERE
wk_dss_data.sys_id LIKE t_update.sys_id||'%';
----------------------------------------------------------------------------
Nested Loop (cost=157.00..12505636.00 rows=2500000 width=20)
Join Filter: (("outer".sys_id)::text ~~ (("inner".sys_id)::text || '%'::text)
)
-> Seq Scan on wk_dss_data (cost=0.00..5479.00 rows=100000 width=31)
-> Materialize (cost=157.00..207.00 rows=5000 width=11)
-> Seq Scan on t_update (cost=0.00..157.00 rows=5000 width=11)
No.1ベストアンサー
- 回答日時:
私も、以前同じ現象になって調べました。
PostgreSQLでは、like検索には通常のindexは使われないようです。
versionは、8.0.xでした。
likeを使うようにインデックスを作成するにはvarchar_pattern_opsオプションを付けます。
<code>
CREATE INDEX test_index ON test_table (col varchar_pattern_ops);
</code>
詳しくは参考URLを見てみてください。
参考URL:http://www.postgresql.jp/document/pg803doc/html/ …
この回答への補足
DQさん
お世話になります。
以下のインデックスを作成し実行しましたが
インデックスが使われませんでした。
ほかに考慮点ございましたらご教授頂けると
幸いです。
以下、インデックス作成
create index i_test ON t_update (sys_id varchar_pattern_ops);
create index i_test2 ON wk_dss_data (sys_id varchar_pattern_ops);
No.2
- 回答日時:
私はこれで解決できたのですが、別の問題なのでしょうか。
あとはPostgreSQLのオプティマイザですね。
Alanizeオプションをつけてvacuumを実行してみてはどうでしょうか。
参考URL:http://www.postgresql.jp/document/pg732doc/refer …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript 【jquery】EasyUIのSubGridにMySQLのテーブルデータを表示&編集にしたい 5 2022/05/02 13:10
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- Oracle SQL update方法 2 2022/06/22 14:07
- Visual Basic(VBA) Selenium Basicの件 5 2023/04/10 20:55
- PostgreSQL 画像とカテゴリーを出力したいのですが、取得の条件を付ける方法がわかりません。 2 2022/05/01 18:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
plgファイルの開き方
-
【Minecraft】GL ERROR
-
SQLでUPSERTを一度に複数行やる...
-
CPRM decrypterのエラーコード...
-
Windowsのファイル管理について...
-
Pythonがインスールできない
-
postgresqlでのトランザクショ...
-
SQLにて指定日付より前、かつ最...
-
Ophcrackについて
-
三段論法を真理値表で証明する
-
sqlの中で、 例えば条件句で AN...
-
tesuto 01
-
python3.12のインストール方法
-
Pythonで2つのデータ(キー無し...
-
数値が定期的にあらわれる文字...
-
終端クォート ' が必要です と...
-
PostgressからMySQL(MariaDB)...
-
【PostgreSQL】行の値の並びを...
-
列が存在しないと言われる
-
PostgreSQL14.6のSSL対応について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
postgreSQLのint型は桁数指定が...
-
テーブルからのselectにおいて...
-
UNIQUEをつけたときのINDEXテー...
-
前方一致が動的に変更される場...
-
3つのテーブルの処理について
-
SQL文作成のお願い
-
postgreSQLのオートナンバーに...
-
クエリアナライザのsp_helpコマ...
-
SQLで検索結果の記事を表示したい
-
SQL SELECT文 別テーブルのレコ...
-
PostgressからMySQL(MariaDB)...
-
plpgsqlのエスケープ文字について
-
近い時間によるテーブル結合
-
マルチテーブル・インサート
-
postgreSQLの正規表現
-
特定カラムの値を変更したいの...
-
講座のある日を抽出したい
-
次の条件を満たすSQL文をご...
-
SQL文の実行に苦労しています。
-
phpPgAdminからSQL文を発行し、...
おすすめ情報