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はPCカメラを呼び出して写真機能を実現します

この記事の例では、VueがPCカメラを呼び出して写真機能を実現する具体的なコードを参考までに共有して...

純粋な CSS を使用して 3D 回転効果を実装するサンプル コード

3D効果を実現するには、主にCSSのpreserve-3dプロパティとperspectiveプロパテ...

CocosCreator で物理エンジン ジョイントを使用する方法

目次マウスジョイント マウスジョイント距離ジョイント距離ジョイントモータージョイント直動ジョイント変...

Centos7 に Zabbix3.0 をインストールするための非常に詳細な手順

序文最近、同社の業務の一部がコンピュータルームに移転し、ホストリソースの監視と管理をより便利に行うた...

最高の無料英語フォント33選を紹介

チャンクファイブフリータイプファミリーCuprum JAH I フリーフォントイェセヴァブークレフィ...

TypeScript でオブジェクト キーの値の範囲を制限する方法

TypeScript を使用する場合、TypeScript が提供する型システムを使用してコードのあ...

動的なデジタル時計を実装するJavaScript

この記事では、JavaScriptで動的なデジタル時計を実装するための具体的なコードを参考までに紹介...

読み取り専用と無効の違い

要約すると: Readonly は入力 (テキスト/パスワード) とテキスト領域に対してのみ有効です...

Vueのフロントエンドとバックエンドのポートの不一致の問題を解決する

Vue のフロントエンドとバックエンドのポートが一致していませんconfig index.jsファイ...

MySQL 5.6 圧縮パッケージのインストール方法

MySQL には、msi インストールと zip 解凍の 2 つのインストール方法があります。 zi...

MySQL でメタデータ ロックがブロックされている場所を確認する方法

MySQL でメタデータ ロックがブロックされている場所を確認する方法手順: 1. セッション1の実...

Linux カーネル デバイス ドライバー proc ファイル システム ノート

/***************** * proc ファイルシステム***************...

純粋な CSS を使用してドロップダウン メニューを作成するサンプル コード

導入:最近の面接の質問を見ると、ドロップダウン メニューを実装するために CSS を使用することが多...

複数の値を返す MySQL ストアド プロシージャ メソッドの例

この記事では、例を使用して、MySQL ストアド プロシージャで複数の値を返す方法について説明します...