MySQLにおける時刻日付型と文字列型の選択について

MySQLにおける時刻日付型と文字列型の選択について

1. DATETIMEとTIMESTAMPの使用

MySQL には、主に YEAR、TIME、DATE、DATETIME、TIMESTAMP など、時間と日付を表す多くのデータ型があります。

インタビュアーの質問: MySQL で時間日付型と文字列型の選択

1. 類似点

datetime と timestamp はどちらも、YYYY-MM-DDHH:MM:SS 年-月-日-時間-分-秒の形式でデータを表すことができます。

2. 相違点

日時ストレージはタイムゾーンとは関係ありません (具体的には、日時は 1 つのタイムゾーンのみをサポートし、これは保存時の現在のサーバーのタイムゾーンです)。一方、タイムスタンプ ストレージはタイムゾーンに関連しています。

datetime と timestamp の精度は秒です。datetime はタイムゾーンに依存せず、広いストレージ範囲 (1001 ~ 9999) を持ちます。timestamp はタイムゾーンに関連しており、狭いストレージ範囲 (1970 ~ 2038) を持ちます。

3. 選択

TIMESTAMP と DATETIME の間には、保存範囲と保存方法を除いて大きな違いはありません。もちろん、タイムゾーンをまたぐビジネスには TIMESTAMP の方が適しています。

2. varcharおよびtextデータ型の使用

MySQL に文字列を保存する場合、char、varchar、または text 型を使用できます。

1. 類似点

varchar と text はどちらも可変長文字列を格納でき、文字列の長さの上限は 65535 バイトです。

2. 相違点

varchar は高速で、スペースを無駄にせず、末尾のスペースを処理せず、上限は 65535 バイトですが、ストレージの長さは 65532 バイトです。長さが 255 バイト未満の場合、長さを格納するために 1 バイトが使用されます。長さが 255 バイトを超える場合、長さを格納するために 2 バイトが使用されます。テキストで、可変長データを格納し、速度が遅く、スペースを無駄にせず、末尾のスペースを処理せず、上限が 65535 バイトで、データ長を格納するために余分なスペースを使用するため、65535 バイトすべてを使用できます。

TEXT 列にインデックスを配置することはできません (フルテキスト インデックスを除く)。テキストの場合、プレフィックス インデックスのみを追加でき、プレフィックス インデックスの最大サイズは 1000 バイトです。

テキストにはデフォルト値がありません

varchar が特定の値より大きい場合、自動的にテキストに変換されます。一般的なルールは次のとおりです。

varchar(255)より大きい場合はtinytextになります

varchar(500)より大きい場合はテキストになります

varchar(20000)より大きい場合はmediumtextになります

3. 選択

1. 頻繁に変更されるフィールドには varchar を使用します。

2. 固定長がわかっている場合は、char を使用します。

3. 255 バイトを超えるデータの場合、varchar または text のみ使用できます。

4. varchar が使用できる場所ではテキストを使用しないでください。

5. 数値フィールドを使用できる場合は、文字列型ではなく数値型を使用するようにしてください。これにより、クエリと接続のパフォーマンスが低下し、ストレージのオーバーヘッドが増加します。これは、クエリと接続を処理するときにエンジンが文字列内の各文字を 1 つずつ比較し、数値型の場合は 1 回の比較だけで十分であるためです。

6. ストレージ エンジンが CHAR と VARCHAR の選択に与える影響:

MyISAM ストレージ エンジンの場合、可変長データ列ではなく固定長データ列を使用するのが最適です。これにより、テーブル全体が静的になり、データの取得が高速化され、スペースを節約して時間を節約できます。 InnoDB ストレージ エンジンの場合、InnoDB データ テーブルのストレージ形式では固定長と可変長が区別されないため、可変長データ列を使用するのが最適です。したがって、CHAR を使用することは、必ずしも VARCHAR を使用するよりも優れているわけではありません。ただし、VARCHAR は実際の長さに従って格納されるため、スペースを節約でき、ディスク I/O と総データ ストレージに適しています。

これで、MySQL での日付と時刻の型と文字列型の選択に関するこの記事は終了です。MySQL での日付と時刻の型と文字列型の選択に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • 一般的な MySQL 関数の例の概要 [集計関数、文字列、数値、時刻と日付の処理など]

<<:  純粋な CSS3 を使用して、円の動的な光る特殊効果アニメーションを実装するためのサンプル コード

>>:  Vueコンポーネントの7つの通信方法についての深い理解

推薦する

MySQL count(1)、count(*)、count(field)の違い

目次1. COUNTの初見2. COUNT(フィールド)、COUNT(定数)、COUNT(*)の違い...

MysqlクエリJSON結果に関連する関数の概要

JSON 形式のフィールドは、MySQL 5.7 で追加された新しい属性ですが、基本的には文字列とし...

Ubuntu 20.04でAliソースを変更する方法

なお、この記事では、単に 20.04 ソースに変更する方法を説明するのではなく、20.04 に基づい...

Vue3 シングルファイルコンポーネントのスタイル機能の詳細な説明

目次スタイルスコープスタイルモジュール状態駆動型動的CSS要約するスタイルスコープ注意事項:スタイル...

MySQL プロセス制御 IF()、IFNULL()、NULLIF()、ISNULL() 関数

MySQL では、IF()、IFNULL()、NULLIF()、および ISNULL() 関数を使用...

resizeを使用して画像切り替えプレビュー機能を実装する方法

要点CSS resize プロパティを使用すると、要素のサイズ変更可能性を制御できます。サイズ変更を...

Linux の一般的な Java プログラム起動スクリプトのコード例

シェルを起動する頻度は非常に低いですが。 。 。しかし、書くたびに、多くの jar ファイル パスを...

vagrant+virtualBoxで仮想マシンを構築する方法

1. はじめにVagrant は、仮想マシン (VirtualBox) を構築および管理するためのツ...

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

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

この記事ではMySQLのNULLについて説明します。

目次序文MySQL の NULL 2 NULL占有長3 NULL値の比較4SQLはNULL値を処理す...

Tencent Cloud Serverをゼロから導入する方法

初めての投稿ですので、間違いや問題点などありましたら、コメント欄で指摘していただければ、今後改善させ...

MySQL 5.7 に組み込まれているストレス テストの mysqlslap コマンドと構文の詳細な説明

序文mysqlslap は、MySQL サーバーへのクライアント負荷をシミュレートし、各ステージの時...

Ubuntu 20.04にROS Noeticをインストールする方法

免責事項:プロジェクトでは ROS 環境を使用する必要があるため、これは Ubuntu 20.04 ...

CSS3 を使用したテキスト折り紙効果のサンプルコード

序文この記事では主に、CSS3 を使用してテキスト折り紙効果を実現する例を紹介します。これは、参考と...