MySQLストレージフィールドタイプのクエリ効率についての簡単な理解

MySQLストレージフィールドタイプのクエリ効率についての簡単な理解

検索パフォーマンスは最速から最遅まで次のとおりです (私が聞いたところによると)。

  • 1 番目: tinyint、smallint、mediumint、int、bigint
  • 2番目: char、varchar
  • 3番目: NULL

説明(再録):

整数型

1. TINYINT、SMALLINT、MEDIUMINT、INT、BIGINTはそれぞれ8、16、24、32、64バイトを使用します。

2. 整数にはすべてオプション属性 UNSIGNED があります (たとえば、tinyint フィールドの値の範囲は unsigned の場合 0 ~ 255 ですが、signed の場合の範囲は -128 ~ 127 です。したがって、負の値が必要ないことが明らかな場合は、通常、負の数をサポートするために signed を設定しません)。

3. INT(1)とINT(20)は保存と計算において同じです。INT(N)のNは、一部の対話型ツールによって表示される文字数のみを指定します。

文字タイプ

charは固定長で、ストレージ効率はvarcharほど良くありませんが、短いデータのクエリにはvarcharよりも劣ります。

固定長。たとえば、uuid が主キーとして使用されている場合は、char の方が適切です。

NULL型

1. NULL列のインデックスには余分なスペースが必要

2. 比較と計算中にNULL値が処理され、インデックスの失敗を引き起こす可能性があります。

したがって、NULL型の使用は避け、整数型を使用するようにしてください。

さらに、時間日付データ型

1. 日付データを保存するのにスペースを無駄にする文字列を使用しないでください。

2. DATE は、1001 年から 9999 年までの年を秒単位の精度で保存できます。日付と時刻を 8 バイトを使用して YYYYMMDDHHMMSS 形式の整数にカプセル化します。

3. TIMESTAMP は、Unix タイムスタンプと同じ、1970 年からの秒数を格納します。1970 年から 2038 年までしか格納できず、4 バイトを使用します。

4. 2つの関数FROM_UNIXTIME()とUNIX_TIMESTAMP()は日付とUnixタイムスタンプを変換します。

5. DATE と TIMESTAMP は時間を保存しますが、時間はどこにありますか? ? ?前者はどこにいても(タイムゾーンに関係なく)時間を表すもので、後者はグリニッジ標準時です。 。つまり、保存時に、与えられた時間に応じて DATE を保存し、保存前にタイムゾーンと与えられたタイムスタンプに基づいて、対応するグリニッジ標準時に応じて TIMESTAMP を最初に計算します。アクセスすると、保存された時間に応じて DATE が返され、保存されたタイムスタンプ (グリニッジ標準時とみなされます) とタイムゾーンに応じて TIMESTAMP が計算され、タイムゾーン内の対応する時間が計算されます。

6. 通常はTIMESTAMPが使用され、スペース効率が高い

7. MYSQL は、秒未満の粒度の日付と時刻の値を提供しません。必要に応じて、BIGINT を使用してマイクロ秒レベルのタイムスタンプを保存するか、DOUBLE を使用して秒後の小数部分を保存できます。

実数型

1. DECIMALは財務目的で使用される

2. DECIMALはBIGINTの範囲外の整数を保存できる

3. FLOATとDOUBLEは、近似計算に標準的な浮動小数点演算を使用します。

char と varchar

1. char は固定長、varchar は可変長です。つまり、varchar はスペースを節約します (ROW-FORMAT=FIXED を使用して作成しない限り)

2. varcharは可変長なので、UPDATE中に長さが長くなると、追加の作業が行われます。

3. 文字列列の最大長が平均長よりもはるかに大きい場合、列がめったに更新されない場合(断片化が問題にならない場合)、UTF8 などの文字セットが使用されている場合(各文字が異なるバイト数を使用して格納される場合)には、varchar を使用します。

4. CHARは次のような場合に適しています: 非常に短い、またはすべての値が同じ長さに近い場合(MD5など)、列が頻繁に変更される場合

5. 末尾のスペースの問題: 上位バージョンの varchar では末尾のスペースが保持されますが、char および下位バージョンの varchar では末尾のスペースが削除されます。

6. CHAR(N) と VARCHAR(N) では、N はバイト数ではなく文字数を表します (UTF8 では中国語の文字は 3 バイトを占めます)

7. VARCHAR(N) データ型は、それが表す文字列のサイズをディスク上に格納しますが、メモリに読み込まれると、メモリは N*k+1 または 2 (N<=255,1;else 2;) を割り当てます (k は文字セットによって決まります)

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Mysql のフィールドのデータの一部をバッチ置換する (推奨)
  • mysql はフィールドコンテンツの一部を置き換え、mysql は関数 replace() を置き換えます。
  • MySQL クエリ フィールド タイプが json の場合の 2 つのクエリ メソッド
  • 単語のグループ化シーケンスと複数フィールドのグループ化のための MySQL グループ方法
  • MySQL の null 可能フィールドは NULL に設定する必要がありますか、それとも NOT NULL に設定する必要がありますか?
  • MySQL の char、varchar、text フィールド タイプの違い
  • MySQL でストアド プロシージャを作成し、データ テーブルに新しいフィールドを追加する方法の分析
  • 1 つ以上のフィールドに基づいて重複データを検索する MySQL SQL ステートメント

<<:  Docker Swarmの概念と使用法の詳細な説明

>>:  Vueはechart円グラフの凡例のパーセンテージを表示するメソッドを実装します

推薦する

Node.js で MySQL データベースにバッチデータを挿入する方法

プロジェクト(nodejs)では、一度に複数のデータをデータベースに挿入する必要があります。データベ...

JavaScript の 50 以上のユーティリティ関数の概要

JavaScript は多くの素晴らしい機能を備えています。この記事では、作業効率の向上とコードのデ...

Docker を使用した nextcloud パーソナル ネットワーク ディスクの構築に関するチュートリアル

目次1. はじめに2. 導入環境ツール4. 展開プロセス要約する1. はじめにNextcloud は...

仕事の効率を上げるJS略語スキル20選

目次複数の変数を同時に宣言する場合は、1 行に短縮できます。分割代入は複数の変数に同時に値を割り当て...

W3C が推奨するモバイル Web マークアップ言語 XHTML Basic 1.1

W3C は最近、「 XHTML Basic1.1 」と「 Mobile Web Best Prac...

Docker で Elasticsearch Kibana と ik Word Segender をデプロイする詳細な説明

esインストール docker pull elasticsearch:7.4.0 # -d : バッ...

クリックイメージ反転効果を実現するJavaScript

最近、顔コレクションに関するプロジェクトに取り組んでいましたが、フロントエンドモジュールを書いている...

Chromeブラウザ設定の新バージョンではクロスドメイン実装が可能

序文現在、フロントエンドは主に webpack の devServer の構成を通じてクロスドメイン...

Vue3 の動的コンポーネントはどのように機能しますか?

目次1. コンポーネントの登録1.1 グローバル登録1.2 グローバルコンポーネントの登録プロセス1...

Zabbixで監視する必要があるホストを追加するための詳細な手順

監視ホストの追加ホスト 192.168.179.104 が zabbix 監視項目に追加されます (...

テンプレートタグの使用方法の詳細な説明(Vue での使用方法の概要を含む)

目次1. HTML5のテンプレートタグ2. テンプレートタグ操作のプロパティとメソッド3. Vueの...

Linux sftp コマンドの使用法

SFTPの概念sftp は、安全なファイル転送プロトコルである Secure File Transf...

メッセージボードにメッセージを追加および削除するための JavaScript

この記事では、JavaScript メッセージ ボードでメッセージを追加および削除する小さな例を詳細...

Brotli圧縮アルゴリズムを有効にするNginxの実装プロセスの詳細な説明

序文Web アプリケーションでは、トラフィックを節約し、転送データのサイズを縮小し、転送効率を向上さ...

mysql8.0.0 winx64.zip 解凍バージョンのインストールと設定のチュートリアル

この記事はmysql8.0.0 winx64.zip解凍版のインストールチュートリアルを記録していま...