私はmysqlデータベースを使用しています。私のウェブサイトはさまざまな要素に分割されています(プロジェクト12の場合はPRJ_12、タスク14の場合はTSK_14、ドキュメント18の場合はDOC_18など)。現在、これらの要素への参照をVARCHARとしてデータベースに保存しています。リレーション列にはインデックスが付けられているため、選択が高速です。
これらの列を2つの列(PRJの「element_type」列と12の「element_id」列)でcurrintすることを考えています。LIKE ...%を含む多くのリクエストを実行するため、このソリューションを検討しています(たとえば、タスクのIDに関係なく、1人のユーザーのすべてのタスクを取得します)。ただし、これらの列を2つに分割すると、インデックス付き列の数が増えます。
だから、私は2つの質問があります:
- インデックス付き列のリクエストは
LIKE ...%
、単純なwhereクエリ(likeなし)よりも実際に低速です。列にインデックスが付けられていない場合、where ... LIKE %
リクエストを行うことはお勧めできませんが、インデックスがどのように機能するかはよくわかりません)。 - 参照列を2つに分割すると、インデックス付きテーブルの数が2倍になります。問題ありますか?
ありがとう、