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