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 オブジェクト指向タイピング ゲーム

推薦する

WeChatミニプログラム開発のためのコンポーネント設計仕様

WeChat ミニプログラム コンポーネント設計仕様コンポーネントベースの開発という考え方は、私の開...

MYSQL インストールの解凍バージョンと発生したエラーと解決策

1 インストールMYSQL 公式サイトから対応する解凍バージョンをダウンロードし、必要なディレクトリ...

Vueはスクロールバースタイルを実装します

最初はブラウザのスクロールバーのスタイルを変更して効果を実現したいと思っていましたが、情報を調べてみ...

JavaScript 関数のカリー化

目次1 関数カリー化とは何ですか? 2 カレーの役割と特徴2.1 パラメータの再利用2.2 早期復帰...

Docker ビルド PHP 環境チュートリアル詳細説明

Dockerのインストール公式インストールスクリプトを使用して最新バージョンのDockerをインスト...

MySQL 30軍事ルールの詳細な説明

1. 基本仕様(1)InnoDBストレージエンジンを使用する必要があります。解釈:トランザクション、...

MySQL で珍しい文字を挿入できないときの対処方法 (文字列値が正しくない)

最近、ビジネス側から、一部のユーザー情報の挿入に失敗し、エラー メッセージが「不正な文字列値:&qu...

Dockerは起動されていないコンテナの設定情報を変更します

私が初めてdockerを使用したときは、dockerfileやdocker-composeを使用して...

JS を使用して航空機戦争の小さなゲームを実装する

この記事の例では、参考のために航空機戦争ゲームを実装するためのJSの具体的なコードを共有しています。...

CSSを使用して画像フレームアニメーションと曲線の動きを実装する

すべてのアニメーションの基本原理は、対応する画像を短時間で次々に表示し、視覚的に動いているように見せ...

Nginx ロードバランシングとは何か、そしてそれをどのように設定するか

負荷分散とは負荷分散は主に、専用のハードウェア デバイスまたはソフトウェア アルゴリズムによって実現...

JenkinsのLinuxインストール手順と各種問題解決(ページアクセス初期化パスワード)

1. Java環境jdk1.8を準備するJavaがインストールされているかどうかを確認します。イン...

HTML のブロックレベル要素と行レベル要素、特殊文字、ネスト規則

基本的な HTML Web ページ タグのネスト ルールを紹介する場合、最初に説明する必要があるのは...

JavaScript を使用して動的な QQ 登録ページを作成する

目次1. はじめに1. 基本レイアウト2. 写真を自動的に切り替える3. コンテンツを追加する4. ...

docker を使用して複数のネットワーク インターフェースを持つコンテナーを起動する方法の例

コンテナにネットワークインターフェースを追加する1 デフォルトのネットワークモードでコンテナを実行す...