列に適切なSQLデータ型を選択します。
適切なSQLフィールドデータ型を選択すると、データベースのパフォーマンス、ストレージ効率、保守性が向上する可能性があります。 1。値範囲に従って値タイプを選択する必要があります。 TinyIntはステータスコードに適しており、INTは通常のプライマリキーに使用され、BIGINTは高い並行機関システムに適しています。 2。文字列タイプは必要に応じて使用する必要があります。 char(n)は固定長のコンテンツに適しており、varchar(n)は可変長テキストに適しており、テキストクラスはVarcharの乱用を避けるためにテキストの大きな段落に適しています(255)。 3.日付ストレージ日時の日付タイプ、DateTime Storageの日付、タイムスタンプは、クロスタイムゾーンの展開とタイムゾーンの自動変換に適しています。 4.列挙された辞書テーブルを備えたTinyIntを使用して、Varcharを使用して状態を保存することを避けるために、辞書テーブルを使用することをお勧めします。列挙は、状態がほとんどなく安定した状態がある場合に利用できます。
SQLフィールドのデータ型を選択すると、データベースのパフォーマンス、ストレージ効率、保守性に直接影響します。多くの人は、テーブル構造を作成するときにフィールドタイプをあまり気にしません。Varchar(255)を使用したり、テキストまたはBigintを直接使用したりします。その結果、後で問題が発生し、データ型が間違って選択されていることがわかりました。

次のポイントは、SQLデータ型をより合理的に選択するのに役立つ実際の開発から要約されたいくつかの実用的な提案です。

1.数値タイプを選択する方法:int、bigint、decimal?
最も一般的な数値フィールドは、整数と小数です。整数の場合、値範囲に基づいてTinyint、Smallint、Int、またはBigintを使用します。
- TinyInt :ステータスコード、列挙値(性別、スイッチステータスなど)、範囲-128〜127に適しています。
- INT :通常のプライマリキーやカウンターに使用でき、範囲は十分に大きくなっています。
- BIGINT :主キーが自己障害があるが、INT上限(高い並行機関システムなど)を超えると予想される場合は、BIGINTに移動します。
- 小数(m、d) :これは、量と精度の要件が高いデータを処理するために使用する必要があります。フロート/ダブルを使用できません。そうしないと、丸めエラーがある場合があります。
ヒント:bigintを使用してトラブルを節約しないでください。違いは大きくありませんが、大量のデータの場合、ストレージスペースとインデックスサイズが増加します。
![]()
2。文字列タイプをランダムに設定しないでください:char vs varchar vsテキスト
文字列タイプは乱用される可能性が最も高く、特にVarchar(255)は普遍的と見なされています。
- char(n) :ID番号や携帯電話番号など、固定長のコンテンツに適した固定長文字列。挿入時に自動的にスペースを入力し、すばやく読み取ります。
- Varchar(n) :ユーザー名、タイトルなどのほとんどのテキストコンテンツに適した可変長文字列。スペースを節約できますが、頻繁に更新すると断片化が発生する場合があります。
- テキスト /ロングテキスト:記事のメインテキストやログの内容など、テキストの大きな段落を保存するために使用されます。注:一部のデータベースエンジンには、インデックスプレフィックスとして使用されていないなど、テキストタイプに制限があります。
実用的な提案:
- ユーザー名は通常、varchar(50)で使用されます
- パスワードハッシュフィールドは、bcryptが固定長に出力するため、char(60)を考慮に入れることができます
- すべてのテキストをVarchar(255)に設定しないでください、必要に応じて上限を設定する方が良いです
3。日付と日付の種類:日付、日時、タイムスタンプ、またはタイムスタンプ?
時間関連のフィールドもしばしば混乱しています。
- 日付:日付のみが保存され、形式はyyyy-mm-ddで、誕生日、契約開始日と終了日などに適しています。
- DateTime :日付時間、精度、秒の精度、作成時間と変更時間の記録に適しています。
- タイムスタンプ:DateTimeと同様ですが、通常、ストレージスペースが少なく、タイムゾーンを自動的に変換します。一部のデータベースは、タイムスタンプの自動更新をサポートしています。
一般的な慣行:
- Create TimeおよびUpdate Timeフィールドは、DateTimeまたはTimestampで使用でき、デフォルト値はcurrent_timestampに設定され、current_timestampの更新でサポートが設定されています。
- タイムゾーン変換が必要ない場合は、DateTimeを使用する方が直感的です。タイムゾーン全体で展開する場合、タイムスタンプを使用する方が便利です。
4.酵素とブール値を表現する方法は?
注文ステータスやユーザータイプなど、いくつかのステータスフィールドを作成する場合があります。
- enum :MySQLは列挙タイプをサポートし、enum( 'Active'、 'inactive')などのオプションを直接定義できます。利点は、入力値が限られていることであり、不利な点は、延長が厄介であることです。
- Tinyintコメントまたは辞書テーブル:より推奨されるアプローチは、TinyIntを使用してステータスを表現し、各番号がドキュメントまたは辞書テーブルと併せて表すものを説明することです。
- ブール /ブール:実際、それはmysqlのtinyint(1)、true = 1、およびfalse = 0のエイリアスです。
提案:
- 状態タイプが少なく、頻繁に変化していない場合は、列挙を使用できます。
- それ以外の場合は、tinyintを使用してコードにマップします。
- Varcharを使用して状態を保存し、スペースを浪費し、確認が困難になります
基本的にそれだけです。 SQLデータ型の選択はシンプルに見えますが、詳細に詰まらせるのは簡単です。適切なものを選択すると、リソースを節約するだけでなく、プログラムの多くの論理的判断と障害耐性処理も減らします。
以上が列に適切なSQLデータ型を選択します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undress AI Tool
脱衣画像を無料で

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

2つの日付の違いを計算するには、データベースタイプに従って対応する関数を選択する必要があります。1。datediff()を使用してMySQLの日差を計算するか、TimestampDiff()の時間と分などのユニットを指定します。 2。SQLServerでdatediff(date_part、start_date、end_date)を使用し、ユニットを指定します。 3. PostgreSQLの直接減算を使用して日差を取得するか、抽出物(Dayfromage(...))を使用してより正確な間隔を取得します。 4。Julianday()関数を使用して、SQLiteの日差を差し引く。日付の注文に常に注意を払ってください

blobstoresbinarydatalikeimages、audio、orpdfsasrawbytes withoutcharecterencoding、whileclobstoresextextextextextextexclessarticlessursiringcharecterencodinglikeutf-8andsupportsstringoperations;

キューブは、分析に適したすべての寸法の組み合わせの集約を生成するために使用されます。ロールアップは、階層的な関係を持つデータに適した階層レベルで徐々に要約されています。キューブは、地域、製品、四半期に応じて合計8つの組み合わせを生成し、ロールアップは年、月、日、その他のレベルの概要を生成します。キューブは、すべての次元の結果を表示するのに適しています。ロールアップは階層を表示するのに適しています。 Cubeは結果セットを爆発させる可能性があり、ロールアップはフィールドの順序に依存する可能性があることに注意してください。概要行はグループ()関数を介して識別でき、合計行はCoalesceで名前が付けられて読みやすくなります。

UseExistsistseCeChecks、特に、特にlargeorcorreatedsubqueriesとasitstopstopstopstopsatthefirstmatchendlesnullssafely; useinformembershipChecksStsSmall、nown、onnon-nullvalueSetswhereadabilityのnullSandsandPerySandpertionsnotcris

grantandRevokestateMentionTheUseDAMERAGEUSERSINSIONSIONSQL.1.GRANTPROVIDESPRIVIDESLIGESLIESSLIESELECT、挿入、更新、削除、削除、変更、実行、実行、実行、実行、2.SYNTAXFORNANTINGISISGRANTPRIVILEGE_TPEONOBJECT_NAMETOUSOOSER_OR_OR_OR_REX

SQLでのOrderbyのパフォーマンスを最適化するには、最初にその実行メカニズムを理解し、インデックスとクエリ構造を合理的に使用する必要があります。ソートフィールドにインデックスがない場合、データベースは「Filesort」をトリガーし、多くのリソースを消費します。したがって、大きなテーブルの直接の並べ替えは避け、ソートされたデータの量を条件を通じて削減する必要があります。第二に、フィールドをソートするための一致するインデックスを確立することで、MySQL 8.0で逆方向のインデックスを作成して効率を向上させるなど、クエリを大幅に高速化できます。さらに、インデックスベースのカーソルページング(場所> 12345など)でディープページング(Limit1000、10など)を使用して、無効なスキャンをスキップする必要があります。最後に、キャッシュ、非同期集約、その他の手段を組み合わせることで、大規模なデータセットシナリオでソートパフォーマンスをさらに最適化することもできます。

dayearisobtainded byconstructatingtinatinating at -stofthegivenyear、およびtheLastDayisdecember31STHESAMEYEAR、withMethodsvarydAtabaseystem;

tofindthesumofacolumninsql、usethesum()function、それはnumersolumn whienignoringnulls;
