アプリ版:「スタンプのみでお礼する」機能のリリースについて

質問があります。PostgreSQLです。
テーブル(test_tbl)があるとします。
テーブル構成は
---------------------------
id ===== char(16) [英数文字格納]
point ==== int2
add_date ==== timestamp
---------------------------
このテーブルから
idが2文字目から'di6ek68dh5ls7g'のレコードを取得したいと考えています。
レコード数がかなりおおいので
パフォーマンスを重視したいのですが、
検索SQLがわかりません。
select * from test_tbl
where id like '%di6ek68dh5ls7g'だとでると
おもうのですが、
これ以上にパフォーマンスがあがる
SQLがわかる方お願いいたします。

A 回答 (1件)

SUBSTRING関数ですかねぇ。


SUBSTRING(a,b,c)
aの文字列の、b文字目からc文字分抽出します。
cを省略すると、最後までになります。

今回の場合は
SELECT * FROM test_tbl
WHERE SUBSTRING(id,2) = 'di6ek68dh5ls7g'


likeはパフォーマンス低下につながりますので、
なるべく使わないよう頑張りましょう~


# OracleならSUBSTR関数、AccessだとMID関数です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!