あいまい検索機能で用いるSQL文のタイムアウトを防ぎたい(処理速度を上げたい)
Springbootフレームワークを用いて、
「テキストボックスに適当な値を入れると、その値を含む項目を表示する」という
あいまい検索機能を作成中です。
下記のようなSQL文を使用していますが、タイムアウトしてしまいます。
この書き方以外にタイムアウトしない書き方をご存じの方や
似た事象に遭って解決できた方がいらっしゃいましたら
どのように書いたらよいかご教示いただきたいです。
該当のソースコード
SELECT * FROM( SELECT s.student_id , s.student_name , t.telephone_number , a.area , b.birth_month FROM student_table AS s LEFT JOIN telephone_number_table AS t ON s.telephone_number = t.telephone_number LEFT JOIN area_table AS a ON s.area_id= a.area_id LEFT JOIN birth_month_table AS b ON s.birth_month = b.birth_month ) AS target WHERE( s.student_id IN ( SELECT css_id FROM tb_trn_rn_css_order AS od LEFT JOIN telephone_number_table AS t ON s.telephone_number = t.telephone_number LEFT JOIN area_table AS a ON s.area_id= a.area_id LEFT JOIN birth_month_table AS b ON s.birth_month = b.birth_month WHERE CAST(s.student_id AS TEXT) LIKE '%${key}%' OR s.student_name LIKE '%${key}%' OR t.telephone_number LIKE '%${key}%' OR a.area LIKE '%${key}%' OR b.birth_month LIKE '%${key}%' ) ) ORDER BY s.student_id
試したこと
上記SQLのように、先にサブクエリでIDを絞り込んでいます。
補足情報(FW/ツールのバージョンなど)
postgreSQLを使用しています。
ビューは使用できません。