これはあまりにも一般的または主観的な質問かもしれませんが、私は助けが必要であり、正確で簡潔な質問が何であるかさえわかりません. 私は過去数日間、これを理解しようとして多くのグーグル検索を行ってきましたが、どのアプローチを取るべきかについてこれまで以上に混乱しています.
MySQL で、製品カタログ用のデータベースを構築しました。製品とタグ、製品とカテゴリなど、いくつかの多対多の関係を追跡する必要があるため、制約INNODBを利用できるように、これらのテーブルで使用する必要があると判断しました。FOREIGN KEYそれはすべて問題ありませんが。INNODB対応しておりませんFULLTEXT。ワイルドカードが検索語の先頭にある場合、インデックスを使用できないため、LIKE '%WORD%'in句を使用するとパフォーマンスが低下することを読みました。WHEREデータベースには、ある時点で多くのエントリが含まれる可能性が高く、検索に永遠にかかることは望ましくありません。
では、どのようにしてケーキを食べ、それを食べるのでしょうか? どちらかを選択する必要がありますか:FULLTEXTまたはFOREIGN KEY? MYISAM検索に最も関連性の高い列のみで構成される一種の要約テーブルを作成し、INNODB テーブルでトリガーを使用して更新を維持する必要がありますか? FOREIGN KEYそれは、少なくとも部分的には、最初に制約を使用することの利点、つまり重複した余分なデータを排除することを無効にしないでしょうか? 大規模なデータベースの検索を可能な限り最高のパフォーマンスで動作させるための最良のパターンは何ですか - 少なくともINNODBvs.の使用に関してはMYISAM?
明るく経験豊富な人が、少なくとも私を正しい方向に向けることができれば幸いです. 前もって感謝します。