相互にリンクされている一連の MySQL テーブルでキーワード検索をすばやく簡単に実行できるようにしようとしています。
一意の「itemID」を持つアイテムのテーブルがあり、関連付けられたデータは他のテーブルに分散され、すべて itemID を介してリンクされています。
この情報の多くを 1 つの使用可能な形式に連結するビューを作成しました。これにより、検索が非常に簡単になりますが、パフォーマンスは向上しません。これはビューの最初の使用であり、おそらく正しい使用法ではありませんでした。誰かが私にいくつかの指針を与えることができれば、私はとても感謝しています.
簡単な例は次のとおりです。
項目表:
itemID | name
------ -------
1 "James"
2 "Bob"
3 "Mary"
キーワード表:
keywordID | itemID | keyword
------ ------- -------
1 2 "rabbit"
2 2 "dog"
3 3 "chicken"
さらに多くの関係...
MY VIEW: (CONCAT_WS、GROUP_CONCAT、およびかなりの数の JOIN を使用して作成)
itemID | important_search_terms
------ -------
1 "James ..."
2 "Bob, rabbit, dog ..."
3 "Mary, chicken ..."
次に、ビューで「mary」と「chicken」を検索すると、itemID=3 の一致が簡単に見つかります。素晴らしい!
問題は、効率的ではない検索ごとに CONCAT と JOIN のすべての作業を行っているように見えることです。現在のテスト データの検索では、約 2 秒かかりますが、これは実用的ではありません。
ビューが何らかの方法でキャッシュされることを望んでいましたが、おそらく正しい方法で使用していません。
定期的に更新するこの検索情報を含む実際のテーブルを作成することもできますが、期待したほどうまくいきません。
誰か提案があれば、私はとても感謝しています。どうもありがとう