助けてくれたヒーローとヒロインに感謝します。
mysql のサブテーブルに関するいくつかの問題に遭遇しましたが、それらの問題の解決策を知りたいのですが、もっと良い方法があるかもしれません。時間。
現在、article0、article1...article9 の 10 個のテーブルがあります。
テーブル構造 id、uid、categoryId acticleName、content、addTime
id は自動インクリメント ID を使用して、モジュロ挿入に対応するテーブルを取得します
uid user id
categroyId category id
acticleName 記事id
content content
addTime add time
クエリを実行する際に、これらのテーブルクエリをマージしましたが、これでは良くない気がするのでマージします。テーブルを別のテーブルに分割する必要がありますか?
マージクエリを使用しない場合
1 uid=100 ですべての記事をクエリする方法
2 オンデマンドで過去 10 件の記事をクエリする必要がある
勉強になります皆さんありがとうございます
追伸 テーブルの分割ルールに問題があるかもしれません。
返信内容:
ご招待ありがとうございます...
まずテーブル クエリの要件をリストし、次にビジネス ニーズに応じてテーブルを分割します。 特定のテーブル分割計画 (モジュロ記事 ID、時間に応じたテーブル分割、等。)。
例: 特定のユーザーの記事情報のクエリに重点を置くニーズがある場合は、テーブル分割の基礎として uid を使用できます。他の唯一の要件が最新の 10 件の記事を読むことである場合は、最新の記事テーブルを維持できます (最新の 10 件または 100 件の記事のみを保存し、変更があった場合は更新します)
さらに、記事の数表に分ける必要があるほどですか?数値が特に大きな桁に達しない場合は、頻繁に読み取られるフィールドを 1 つのテーブルに配置し、あまり読み取られないフィールドを別のテーブルに分離して、1 つのテーブルのサイズを削減し、適切なインデックスを確立することができます。適切なクエリには問題ありません...
最後に、テーブルの最適化が完了した後、フロントデスクから読み取るときに、キャッシュを実行するか、ファイルを静的にするなどできますか...
上...
遅れました、基本的に@王jinliangが言ったことです。完成も原則です。それを言うのが遅すぎるので、ジン・リャンがそれをもっと補ってくれるといいのですが?私は何も言いません、ただ黙ってください、私はあなたに最善の一票を捧げます。
マージ エンジンと myisam エンジンを使用してテーブル パーティショニングを実装できます。
以前に良い答えがありました。付け加えておきます。さまざまな条件付きクエリが使用されると考えている場合は、テーブルを時間で分割するのがおそらく最良の選択です。