タイトルで提起された問題は、段階的に分解して解決することができます。 MySQL では KEY と INDEX は同義です。そうすると、この質問は PRIMARY KEY、UNIQUE KEY、INDEX の違いに簡略化できます。これら 3 つは、まさにインデックスの区分です。主キー インデックス、一意のインデックス、通常のインデックス (INDEX) です。 INDEX を使用すると、データベースからのデータの読み取りが高速化されます。 INDEX は通常、JOIN、WHERE、および ORDER BY 句の列に追加されます。 インデックスを作成するときは、インデックスが SQL クエリ ステートメント (通常は WHERE 句の条件として) に適用されていることを確認する必要があります。 実際、インデックスは主キーとインデックス フィールドを格納し、エンティティ テーブルのレコードを指すテーブルでもあります。 インデックスにも欠点があります。インデックスによりクエリ速度は向上しますが、INSERT、UPDATE、DELETE などのテーブル更新は遅くなります。テーブルを更新する場合、MySQL はデータだけでなくインデックス ファイルも保存する必要があるためです。 MySQL における KEY と INDEX の違い KEY は通常、INDEX の同義語です。列定義にキーワード属性 PRIMARY KEY が指定されている場合は、PRIMARY KEY を KEY のみとして指定することもできます。これは他のデータベース システムとの互換性のために行われます。 PRIMARY KEY は一意の KEY です。この場合、すべてのキーワード列は NOT NULL として定義する必要があります。列が明示的に NOT NULL として定義されていない場合、MySQL はそれらを暗黙的に定義する必要があります。 KEY、またはキー値は、主キー (PRIMARY KEY)、外部キー (Foreign KEY) などのリレーショナル モデル理論の一部であり、データの整合性チェックや一意性制約などに使用されます。 INDEX は実装レベルにあります。たとえば、テーブル内の任意の列にインデックスを作成できます。その後、インデックスが作成された列が SQL ステートメントの Where 条件にある場合、データをすばやく見つけて取得できます。 UNIQUE INDEX に関しては、それは単なる INDEX のタイプです。UNIQUE INDEX を作成すると、この列のデータは繰り返されないことを示します。MySQL は、UNIQUE INDEX タイプのインデックスに対してさらに特別な最適化を行うことができると思います。 したがって、テーブルを設計するときには、KEY はモデル レベルのみでよく、クエリの最適化が必要な場合は、関連する列に対してインデックスを作成できます。 鍵 KEY はデータベースの物理構造であり、2 つの意味があります。1 つは制約であり、データベースの構造的整合性を制約および規制することに重点が置かれています。もう 1 つはインデックスであり、クエリを支援します。 キーには制約とインデックスの両方の意味があることがわかります。 索引 INDEX もデータベースの物理構造ですが、補助クエリとしてのみ機能し、作成されると追加のスペースを占有します。インデックスはプレフィックスインデックス、フルテキストインデックスなどに分けられます。インデックスは単なるインデックスであり、インデックス付きフィールドの動作を制限するものではありません。 主キーと一意キーの違い PRIMARY KEY と UNIQUE KEY は似ています。PRIMARY KEY は通常 1 つの列ですが、複数の列になることもあり、通常はデータの行を決定します。 テーブルには PRIMARY KEY を 1 つだけ設定できますが、UNIQUE KEY は複数設定できます。 列が UNIQUE KEY として設定されている場合、その列内の 2 つの行に同じデータが含まれることはありません。 PRIMARY KEY では NULL 値は許可されませんが、UNIQUE KEY では許可されます。 要約すると、類似点は次のとおりです。 違い: テーブル t を変更して制約 uk_t_1 UNIQUE (a,b); t に (a ,b ) 値 (null,1); # 繰り返すことはできません t に (a ,b ) 値 (null,null); # 繰り返すことができます MySQL では、PRIMARY KEY 列に対して UNIQUE INDEX が自動的に作成されるため、再度インデックスを作成する必要はありません。 PRIMARY KEY と UNIQUE INDEX に関するインターネット上の説明: 「PRIMARY」は INDEX ではなく PRIMARY KEY と呼ばれることに注意してください。 オペレーションインデックス インデックスを構築すると、インデックス ファイル用のディスク領域が消費されます。 CHAR または VARCHAR 型の場合、長さはフィールドの実際の長さより短くてもかまいません。BLOB または TEXT 型の場合は、長さを指定する必要があります。 テーブルを作成するときにインデックスを作成します。 テーブルmytableを作成します( ID INT NULLではありません、 ユーザー名 VARCHAR(15) NOT NULL、 INDEX [INDEXName] (ユーザー名(長さ)) ); インデックスの削除
以下もご興味があるかもしれません:
|
1.sshコマンドLinux では、ssh コマンドを使用して別のサーバーにログインできます。 2 ...
オペレーティングシステム: Ubuntu 17.04 64ビットMySQL バージョン: MySQL...
通常、私たちが構築する Docker イメージはサイズが大きく、多くのディスク領域を占有します。コン...
LINUX では、定期的なタスクは通常、cron デーモン プロセス [ps -ef | grep ...
序文私は、Web サイトのフロントエンド パフォーマンス最適化のための JavaScript と C...
トリガー メソッドを使用できます。JavaScript にはネイティブのトリガー関数はありません。自...
例:場所のルートとエイリアスルートディレクティブは、ルートによって設定されたディレクトリに検索ルート...
目次チュートリアルシリーズ1. バックアップ戦略の説明1. バックアップの種類2. バックアップで考...
私はいつも、なぜMySQLデータベースのtimestampタイムゾーンの問題を無視できるのか疑問に思...
ウィンドウ環境にmysql5.7.21をインストールします。詳細は次のとおりです。 1. MySQL...
この記事では、適応解像度を実現するためのVue2.0の具体的なコードを参考までに紹介します。具体的な...
1. サーブレットとは何か1.1. 正式な言葉で説明する:サーブレットは、動的な Web リソースを...
[LeetCode] 184. 部門最高給与従業員テーブルにはすべての従業員が保存されます。すべて...
1. バックグラウンド実行一般的に、Linux 上のプログラムは .sh ファイル (./sh フ...
NProgress は、ページがジャンプしたときにブラウザの上部に表示される進行状況バーです。公式ウ...