Web サイトの検索機能を作成しようとしていますが、次のクエリを使用して、MySQL 一時テーブルを使用してデータ入力を処理するアプローチを決定しました。
CREATE TEMPORARY TABLE `patternmatch`
(`pattern` VARCHAR(".strlen($queryLengthHere)."))
INSERT INTO `patternmatch` VALUES ".$someValues
$someValues
レイアウトを含むデータのセット、('some', 'search', 'query')
または基本的にユーザーが検索したものはどこにありますか。images
次に、テーブル内のデータに基づいてメイン テーブルを次のpatternmatch
ように検索します。
SELECT images.* FROM images JOIN patternmatch ON (images.name LIKE patternmatch.pattern)
次に、各結果が入力とどの程度一致しているかに基づいてヒューリスティックまたはスコアリング システムを適用し、そのヒューリスティックなどによって結果を表示します。
私が疑問に思っているのは、一時テーブルの作成に必要なオーバーヘッドはどれくらいですか? それらはセッション内にのみ存在し、セッションが終了するとすぐに削除されることは理解していますが、1 秒あたり数十万回の検索がある場合、どのようなパフォーマンスの問題が発生する可能性がありますか? 検索機能を実装するより良い方法はありますか?