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はプルダウンとスクロールでデータを読み込む例を実装しています

目次ステップ1: インストールステップ2: 引用ステップ3: 使用Webプロジェクトでは、データを読...

JSインターセプト文字列の3つの方法の詳細な説明

JS には、文字列をインターセプトするための 3 つのメソッド、 slice() 、 substri...

mysql mycat ミドルウェアの簡単な紹介

1. mycatとはエンタープライズアプリケーション開発のための完全にオープンソースの大規模データベ...

img タグの src 属性値が空の場合の 2 つのリクエストの問題 (IE 以外のブラウザ)

img src 値が空の場合、リクエストが 2 つ行われます。一部の学生は以前に同様の状況に遭遇した...

js配列の基本的な使い方のまとめ

序文配列は特別な種類のオブジェクトです。 js には実際の配列はなく、オブジェクトを使用して配列をシ...

CentOS7 に Redis をインストールして設定する方法

導入Redis を詳しく説明する必要はありません。インストールと設定を始めましょう。インストールソー...

モバイル端末のジャンプ問題を解決する(CSS遷移、ターゲット疑似クラス)

序文モバイル端末に触れたばかりの友人の多くは、クリックジャンプルーティング、特にVueルーティングを...

reactにおけるstateの略語の詳細な説明

序文国家とは何か私たちは皆、React はステート マシンであると言います。それはどのように反映され...

EasyUEFI を使用して Windows 10 で USB ドライブなしで Ubuntu 18 をインストールする

1. BIOSを確認するまず、コンピュータの起動モードを確認します。win+R と入力し、msinf...

CSS3 ベジェ曲線の例: リンクホバーアニメーション効果の作成

CSS3 アニメーション トランジションを使用して、リンクの上にマウスを移動すると小さなポップアップ...

Docker Swarm を使用して分散クローラー クラスターを構築する例

クローラーの開発プロセス中に、クローラーを複数のサーバーに展開する必要がある状況に遭遇したことがある...

Windows Server win2003、win2008R2、win2012、win2016、win2019 システム バージョン間の違い

最近、Microsoft は 2019 サーバー システムをリリースしました。一般的に、Micros...

CentOS 起動時にカーネルモジュール overlayfs 操作を自動的にロードする

CentOS でカーネル モジュールを自動的にロードするには、/etc/sysconfig/modu...

geo モジュールを使用して Nginx でホワイトリストを設定する例

元の構成: http { ...... limit_conn_zone $binary_remote...

MySQL での %% のようなファジークエリの実装

1、%: 0 個以上の任意の文字を表します。あらゆるタイプと長さの文字に一致します。場合によっては、...