MYSQLデータベーステーブル構造の最適化方法の詳細な説明

MYSQLデータベーステーブル構造の最適化方法の詳細な説明

この記事では、例を使用して、MYSQL データベース テーブル構造を最適化する方法を説明します。ご参考までに、詳細は以下の通りです。

適切なデータタイプを選択する

1. データを保持できる最小のデータ型を使用する

2. 単純なデータ型を使用します。 MySQL では、varchar 型よりも int 型の方が処理が簡単です。

3. 可能な限り、フィールドを定義するときはnot nullを使用する

4. テキストタイプはできるだけ使用しないでください。使用する必要がある場合は、テーブルを分割することを検討してください。

日付と時刻を格納するにはintを使用し、 FROM_UNIXTIME() [int型のタイムスタンプを日付と時刻の形式に変換]、 UNIX_TIMESTAMP() [日付と時刻の形式をint型に変換]を使用して変換します。

IPアドレスの保存にはbigintを使用し、変換にはINET_ATON() [IP形式をintに変換]、 INET_NTOA() [int形式を通常のIP形式に変換]を使用します。

テーブルの正規化と非正規化

正規化とは、データベース設計の仕様を指します。現在の正規化は、一般的に 3 番目の設計パラダイムを指し、候補となるキー フィールドに対してデータ テーブルに非キー フィールドが存在しないことが求められます。

伝達関数の依存性は第 3 正規形に準拠します。

第 3 正規形に準拠していないテーブルには、次の問題があります。

1. データの冗長性: (分類、分類の説明) 記録は製品ごとに保存されます

2. データの挿入/更新/削除の例外

正規化された操作:

非正規化とは、クエリの効率や考慮を考慮して、本来第 3 正規形に準拠しているテーブルに対して、適切に冗長性を高め、クエリの効率を最適化するという目的を達成することです。非正規化は、空間を時間に変換する操作です。

例:

テーブルを非正規化する

注文情報を非正規化します。

表の垂直分割

垂直分割は、多くの列を持つ元のテーブルを複数のテーブルに分割し、テーブル幅の問題を解決します。通常、垂直分割は次の原則に従って行われます。

1. あまり使用されないフィールドを別のテーブルに保存します。

2. 大きなフィールドをテーブル内に個別に保存します。

3. よく使うフィールドをまとめます。

水平分割

テーブルを水平に分割する目的は、1 つのテーブルにデータが多すぎるという問題を解決することです。水平分割の各テーブルの構造はまったく同じです。

一般的に使用される水平分割方法:

1. customer_id に対してハッシュ演算を実行します。5 つのテーブルに分割する場合は、 mod(custoneer_id,5)を使用して 0 ~ 4 の値を抽出します。

2. 異なるハッシュIDごとに異なるテーブルにデータを保存する

MySQL 関連のコンテンツに興味のある読者は、このサイトの次のトピックをチェックしてください: 「MySQL クエリ スキル」、「MySQL 共通関数の概要」、「MySQL ログ操作スキル」、「MySQL トランザクション操作スキルの概要」、「MySQL ストアド プロシージャ スキル」、および「MySQL データベース ロック関連スキルの概要」

この記事が皆様のMySQLデータベース設計に役立つことを願っています。

以下もご興味があるかもしれません:
  • MySQLデータテーブルの基本操作:テーブル構造の操作、フィールド操作例の分析
  • MySQL で 2 つのデータベース テーブル構造を比較する方法
  • MySQL の frm ファイルからテーブル構造を復元する 3 つの方法 [推奨]
  • Linux mysqldump によるデータベース、データ、テーブル構造のエクスポートの詳細な説明
  • MySQLはテーブル構造を最適化するためにプロシージャanalyse()関数を使用する
  • Navicat for MySQLを使用してテーブル構造スクリプトをエクスポートする簡単な方法
  • テーブル構造とテーブルデータをコピーするMySQLの方法
  • MySQLのテーブル構造を変更する際に注意すべき点
  • MySQL テーブル構造変更コマンドの概要
  • MySQLテーブルのテーブル構造を素早く変更する方法

<<:  Node.js で簡単なクローラーケースを作成するチュートリアル

>>:  Linux+ApacheサーバURLの大文字と小文字の区別の問題を解決する

推薦する

MySQL をクリーンにアンインストールする方法 (テスト済みで効果的)

Mysql を完全にアンインストールするにはどうすればいいですか?以下の手順に従って実行してくださ...

nginx で Vue プロジェクトをデプロイする方法

今日は nginx サーバーを使用するのですが、vue プロジェクトをサーバーにデプロイする必要もあ...

CSS BEM 記述標準の詳細な説明

BEM は、Web 開発に対するコンポーネントベースのアプローチです。ユーザー インターフェイスを独...

MySQL 8.0.11 の詳細なインストール手順

この記事では、参考までにMySQL 8.0.11のインストール手順を紹介します。具体的な内容は次のと...

Bootstrap 3.0 学習ノート グリッドシステム事例

序文前回の記事では、主にグリッドシステムの基本原理を学び、簡単なケースを通してその原理を実践しました...

ミニプログラムの基本的な使用方法の知識ポイント(非常に包括的で、お勧めです!)

目次アプリを登録するときに何をすればよいですか?ページを登録するときに通常何をする必要がありますか?...

VMware、nmap、burpsuite インストール チュートリアル

目次VMware バープスイート1. 仮想マシンイメージとVMwareのインストールと使用2. 仮想...

bash のスクリプトデバッグメカニズムの詳細な説明

スクリプトをデバッグモードで実行するbash -x <script> を使用すると、スク...

Postman 自動インターフェーステストの実践

目次背景説明GETリクエストの作成事前リクエストスクリプトで署名を作成するスクリプトは環境変数に書き...

MySQL の一般的な問題とアプリケーション スキルの概要

序文MySQL の日常的な開発やメンテナンスでは、パスワードの紛失やテーブルの破損など、避けられない...

JavaScript ECharts の使用方法の説明

以前、プロジェクトを行う際に ECharts を使用しました。今日はそれをメモとして整理し、より多く...

MySQLはデータ復旧を実装するためにbinlogログを使用する

MySQL binlog は MySQL ログの中で非常に重要なログであり、データベースのすべての ...

CSS3を使用してヘッダーアニメーション効果を作成する

Netease Kanyouxi公式サイト(http://kanyouxi.163.com/)(棚...

バックエンドの権限に基づいてナビゲーション メニューを動的に生成する Vue-router のサンプル コード

目次js の1. グローバルガードを登録する2. Vuex 状態管理グローバルキャッシュルート3. ...

アプレットにおけるwx.getUserProfileインターフェースの具体的な使用

最近、WeChatミニプログラムは、監査ミニプログラムのwx.loginおよびwx.getUserI...