MySQL テーブルの垂直分割と水平分割

MySQL テーブルの垂直分割と水平分割

垂直分割

垂直分割とは、データテーブルの列を分割すること、つまり、多くの列を持つテーブルを複数のテーブルに分割することを指します。

  1. 通常、垂直分割は次の原則に従って実行されます。
  2. あまり使用されないフィールドを別のテーブルに配置します。
  3. テキストや BLOB などの大きなフィールドを分割して付録に配置します。

頻繁に組み合わせてクエリされる列は 1 つのテーブルに配置されます。

垂直分割はデータ テーブル設計の最初に実行し、クエリ時に結合キーを使用するようにします。

水平分割

水平分割とは、データテーブルの行を分割することです。テーブル内の行数が 200 万を超えると、処理が遅くなります。このとき、1 つのテーブルのデータを複数のテーブルに分割して保存することができます。

水平分割のヒント

1. 分割原則

通常、テーブルを分割するには係数法を使用します。たとえば、400 万人のユーザーを持つユーザー テーブルは、クエリの効率を向上させるために 4 つのテーブルに分割されます。

ユーザー1、ユーザー2、ユーザー3、ユーザー4

IDモジュラス方式を使用すると、データは4つのテーブルに分散されます。Id%4+1 = [1,2,3,4]

次に、クエリ、更新、削除もモジュラスメソッドを使用してクエリされます。

$_GET['id'] = 17,
17%4 + 1 = 2、 
$tableName = 'ユーザー'.'2'
id = 17 の users2 から * を選択します。

挿入時には、自動増分 ID を提供するために一時テーブル uid_temp も必要です。このテーブルは、自動増分 ID を提供するためだけに使用されます。

uid_temp 値(null) に挿入します。

自己増分 ID を取得した後、モジュロ メソッドを通じてサブテーブルが挿入されます。

水平分割後のテーブル内のフィールドの列と型は元のテーブルと同じである必要がありますが、auto_increment自己増分を削除することを忘れないでください。

加えて

  • 一部のビジネス ロジックは、地域や年などのフィールドごとに分割することもできます。
  • 分割テーブルは、一部のクエリの効率的なクエリ要件のみを満たすことができます。現時点では、製品計画のインターフェースからユーザーのクエリ動作を制限する必要があります。たとえば、アーカイブを年ごとに分割したい場合、ページ設計により、ユーザーは検索する前に年を選択するように制限されます。
  • 分析や統計を行うときは、自分のニーズのため、同時実行性が非常に低いため、少し長く待っても問題ありません。このとき、union を使用してすべてのテーブルをクエリ用のビューに結合し、再度クエリを実行できます。

ビュー ユーザーを、users1 ユニオンから選択、users2 ユニオンから選択として作成します.........

以上がMySQLテーブルの垂直分割と水平分割の詳細です。MySQLテーブル分割の詳細については、123WORDPRESS.COMの他の関連記事にご注目ください。

以下もご興味があるかもしれません:
  • MySQL 文字列分割の例 (区切り文字なしの文字列抽出)
  • MySQL 文字列分割操作 (区切り文字を含む文字列のインターセプション)
  • MySQL の指定文字によるマージと分割の例のチュートリアル
  • MySQL インターセプションと文字列分割関数の使用例
  • MYSQL データベースのデータ分割の概要: サブライブラリとサブテーブル
  • MySQLの一般的なデータ分割方法
  • Perlを使用してデータテーブル(MySQL)を分割し、データインスタンスを移行する
  • mysqlはコンマに基づいてデータ行を複数の行に分割します

<<:  Ubuntu 20.04 中国語入力方法のインストール手順

>>:  ネイティブ JS オブジェクト指向タイピング ゲーム

推薦する

Vue プラグイン エラー: このページで Vue.js が検出されました。問題は解決しました

Vue プラグインがエラーを報告しました: このページで Vue.js が検出されましたVueプラグ...

MySQLの基本操作を詳しく解説(第2部)

序文この記事には1. データベースのいくつかの主要な制約2. テーブル間の関係制約:主キー制約: 機...

MySql ページングで limit+order by を使用する場合のデータ重複の解決策

目次まとめ問題の説明問題を分析する問題を解決するまとめ複雑な知識をシンプルに説明できることは重要です...

iframe の多層ネスト、無制限のネスト、高度に適応したソリューション

ページ A、B、C の 3 つがあります。ページ A にはページ B が含まれ、ページ B にはペー...

VueはTeleportをベースにModalコンポーネントを実装します

目次1. テレポートについて知る2. テレポートの基本的な使い方3. 最初のステップの最適化4. 第...

Vue 関数のアンチシェイクとスロットリングの正しい使用方法

序文1. デバウンス: 高頻度イベントがトリガーされた後、関数は n 秒以内に 1 回だけ実行されま...

Vue uniapp はセグメンター効果を実現します

この記事では、セグメンター効果を実現するためのvue uniappの具体的なコードを参考までに共有し...

中央のテキストの両側に水平線を描くためのCSS

1. vertical-align プロパティは次の効果を実現します。 vertical-alig...

Vue 監視プロパティと計算プロパティ

目次1. 監視プロパティを監視する1. ショッピングカート2. すべて選択し、すべて選択解除する2....

MySQL 文字列インデックスのより合理的な作成ルールに関する議論

序文MySQL インデックスの使用に関しては、これまでインデックスの最左接頭辞ルール、インデックス ...

MySQL の列から行への変換と年月グループ化の例

以下のように表示されます。 SELECT count(DISTINCT(a.rect_id)) zc...

SSL を実装するために nginx を設定する方法の例

環境説明サーバーシステム: Ubuntu 18.04 64ビットnginx: 1.14この記事では主...

CSS3マスクレイヤーのくり抜き効果を実現するさまざまな方法

この記事では、マスク レイヤーの中空化を実現する 4 つの方法を紹介します。みんなと共有し、自分用の...

MySQL における Datetime と Timestamp の使用の概要

目次1. MySQL で現在の時刻を表現するにはどうすればよいでしょうか? 2. TIMESTAMP...

テーブルはセルとimg画像を結合してtd HTML全体を埋めます

ソースコード(一部のクラスは削除されています):コードをコピーコードは次のとおりです。 <テー...