以下のようなストアドプロシージャがあります
SELECT *
FROM Table1
WHERE Tag IN (ids)
ここTag
にInteger
コラムがあります。
コンマ区切りの値を文字列としてストアド プロシージャに渡すのにうんざりしましたが、機能しません。次に、以下のようなストアドプロシージャを使用しました
SELECT *
FROM Table1
WHERE FIND_IN_SET(Tag, ids)
これは非常にうまく機能します。唯一の問題は、テーブルが非常に大きいことです。何百万もの行があり、FIND_IN_SET を使用すると、直接 SQL ステートメントを実行する場合に IN に比べて時間がかかりすぎます。
使用するのに最適なパフォーマンス最適化オプションは何ですか?
IDを整数に変換し、IN句の準備ができて解析できる分割関数はありますか? それが最良の選択肢になると思います。提案やアイデアはありますか?