Mysqlにおけるkeyとindexの違い点整理

2202 ワード

まずコードを見に来ました。

ALTER TABLE reportblockdetail ADD KEY taskcode (taskcode)
ALTER TABLE reportblockdetail DROP KEY taskcode
うん、これは確かに紛らわしいところです。
私たちがMySQLを使っている間は、この問題に注意しないかもしれません。ほとんどの場合、彼らが示している効果は同じですが、やはり彼らを等号にすることはできません。
インデックス(index)と制約(key)の違いは主に両者の出発点が違っています。索引(index)はメンテナンステーブルの検索と操作速度を担当しています。
この困惑があると、MySQLの中に奇妙な現象がある可能性が高いです。
  • MySQLのインデックスは、制約されたインデックスである(すなわち、インデックスを作成しても自動的に制約が生じる)
  • は、MySQLに制約を作成しても自動的にインデックスが付けられます。
  • 変ですよね。両者は違っていますが、創建時にはまた相手に付いてきます。なぜこのようにしますか?なぜなら、
    MySQLの制約効果はインデックスによって達成され、MySQLデータベースは現在の列がuniqueかどうかはuniqueインデックスによって判断される。
    最後にまとめます
  • には、メインキー制約、一意制約、外部キー制約、非空制約、チェック制約(MySQLでは、検査制約は使用できませんが、正常に確立できます)があります。
  • 索引には、一般的な索引、主要な索引、唯一の索引、結合索引、全文索引などがあります。
  • 両方の実現は表を作る時に実現できます。表を作った後はalter文によって確立と削除を実現します。具体的な語句は直接百度以上の二点です。MySQL 5.5、innoDB記憶エンジンの下でテストします。
  • 理論的にはMySQLのkeyとindexを等号にすることはできません。彼らは同じことではありませんが、実際に使うと、彼らはほとんど区別がありません。
    コンテンツ拡張:
    keyとprimary keyの違い
    
    CREATE TABLE wh_logrecord ( 
    logrecord_id int(11) NOT NULL auto_increment, 
    user_name varchar(100) default NULL, 
    operation_time datetime default NULL, 
    logrecord_operation varchar(100) default NULL, 
    PRIMARY KEY (logrecord_id), 
    KEY wh_logrecord_user_name (user_name) 
    ) 
    KEYとINDEXの違い
    この部分はまだ雲の中にあります。
    KEYは通常INDEX同義語です。キーワード属性PRIMARY KEYが列定義に与えられている場合、PRIMARY KEYもKEYにのみ指定できます。この目的は他のデータベースシステムとの互換性です。PRIMARY KEYは唯一のKEYです。この場合、すべてのキーワード列はNOT NULLと定義しなければなりません。これらの列がNOT NULLと明確に定義されていない場合、MySQLはこれらの列を暗黙的に定義するべきである。一つの表はPRIMARY KEYだけです。
    MySQLにおけるIndexとKeyの違い
    キーとは、関係モデル理論の一部であり、例えば、メインキー(Primary Key)、外部キー(Foreign Key)などがあり、データの完全性チェックと一意性制約などに用いられる。Indexは、テーブルの任意の列に対してインデックスを作成することができるなどの実現レベルにあり、インデックスを作成する列がSQL文のWhere条件の中にある場合、迅速なデータの位置付けが得られ、迅速に検索されます。Unique IndexというのはIndexの一つにすぎません。Unique Indexを確立したのはこの列のデータが重複してはいけないことを表しています。MySQLはUnique Indexタイプのインデックスに対してさらに特殊な最適化ができると予想しています。
    したがって、デザインテーブルでは、Keyはモデルレベルでしかなく、クエリの最適化が必要であれば、関連する列にインデックスを作成すればよい。
    また、MySQLでは、Primary Keyの列に対して、MySQLはUnique Indexを自動的に確立していますので、上にインデックスを作成する必要はありません。
    以上がMysqlの中のkeyとindexの区別点整理の詳細です。Mysqlの中のkeyとindexの違いに関する資料は他の関連記事に注目してください。