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つの通信方法についての深い理解

推薦する

スケジュールされた時間に古いジャンクファイルを自動的に削除する Linux 用の Autotrash ツール

Autotrash は、古い削除済みファイルを消去するプロセスを自動化するコマンド ライン プログラ...

LinkedIn がウェブサイト閲覧を簡素化するためにリニューアル

ビジネス ソーシャル ネットワーキング サイト LinkedIn は最近、ナビゲーション バーとユー...

ORM モデル フレームワークを使用して MySQL データベースを操作する方法

ORM とは何ですか? ORM は Object Relational Mapping の略で、オブ...

ウェブデザインにおけるテキスト入力ボックスのパラメータの説明

一般的なゲストブック、フォーラムなどでは、テキスト入力ボックスが使われています。これは HTML 言...

Linuxでプロセスが占有するポート番号を表示する

Linux システム管理者にとって、サービスがポートに正しくバインドされているか、またはポートをリッ...

CSS ウェイト値(カスケード)の例の詳細な説明

•CSSには多くのセレクターがあります。複数のセレクターを同じ要素に適用するとどうなるでしょうか? ...

イベントバブリング、イベントキャプチャ、イベント委任に基づく詳細な説明

イベントバブリング、イベントキャプチャ、イベント委任JavaScript では、イベント委譲は非常に...

Nginx タイムアウト設定の詳細な説明

最近、プロジェクトで nginx を使用し、バックエンドで Java を使用しました。バックエンドで...

Nginx のタイムドログカットの詳細な説明

序文デフォルトでは、Nginx ログはファイルに書き込まれます。各ドメインのログを区別するために、通...

MySQL サブクエリ (ネストされたクエリ)、結合テーブル、複合クエリの詳細な説明

1. サブクエリMySQL 4.1以降はサブクエリをサポートしていますサブクエリ:別のクエリ内にネス...

JavaScriptはブラウザがIEかどうかを判定します

フロントエンド開発者としては、IEの落とし穴は避けて通れません。他のブラウザはいいのにIEは壊れてい...

MySQL データベース内の同じテーブルを同時にクエリして更新する方法

通常のプロジェクトでは、1 回の入札で同時にデータを更新および照会する必要があるという問題によく遭遇...

CSSの優先度を理解する2つの方法

方法1: 値を追加する公式の説明を見るには MDN にアクセスしてください。優先度はどのように計算さ...

HTML シンプルな Web フォーム作成例の紹介

<input> はユーザー情報を収集するために使用され、終了ステートメントはありません。...