mysql索引用來快速地尋找那些具有特定值的記錄,所有mysql索引都以b-樹的形式儲存。如果沒有索引,執行查詢時mysql必須從第乙個記錄開始掃瞄整個表的所有記錄,直至找到符合要求的記錄。表裡面的記錄數量越多,這個操作的代價就越高。如果作為搜尋條件的列上已經建立了索引,mysql無需掃瞄任何記錄即可迅速得到目標記錄所在的位置。如果表有1000個記錄,通過索引查詢記錄至少要比順序掃瞄記錄快100倍。
總體分析
primary, index, unique 這3種是一類
primary 主鍵。 就是 唯一 且 不能為空。
index 索引,普通的
unique 唯一索引。 不允許有重複。
fulltext 是全文索引,用於在一篇文章中,檢索文字資訊的。
mysql的索引型別:primary, index,unique,fulltext,spaial 有什麼區別?各適用於什麼場合?
舉個例子來說,比如你在為某商場做乙個會員卡的系統。
這個系統有乙個會員表
有下列字段:
會員編號 int
會員姓名 varchar(10)
會員身份證號碼 varchar(18)
會員** varchar(10)
會員住址 varchar(50)
會員備註資訊 text
那麼這個 會員編號,作為主鍵,使用 primary
會員姓名 如果要建索引的話,那麼就是普通的 index
會員身份證號碼 如果要建索引的話,那麼可以選擇 unique (唯一的,不允許重複)
會員備註資訊 , 如果需要建索引的話,可以選擇 fulltext,全文搜尋。
不過 fulltext 用於搜尋很長一篇文章的時候,效果最好。
用在比較短的文字,如果就一兩行字的,普通的 index 也可以。
建立索引使用說明
普通索引
這是最基本的索引型別,而且它沒有唯一性之類的限制。
建立索引,例如create index 《索引的名字》 on tablename (列的列表);
修改表,例如alter table tablename add index [索引的名字] (列的列表);
建立表的時候指定索引,例如create table tablename ( […], index [索引的名字] (列的列表) );
唯一性索引
這種索引和前面的「普通索引」基本相同,但有乙個區別:索引列的所有值都只能出現一次,即必須唯一。
mysql主鍵:
mysql主鍵是一種唯一性索引,但它必須指定為「primary key」。
例如「create table tablename ( […], primary key (列的列表) ); 」。但是,我們也可以通過修改表的方式加入主鍵,例如「alter table tablename add primary key (列的列表); 」。每個表只能有乙個主鍵。
全文索引
mysql從3.23.23版開始支援全文索引和全文檢索。在mysql中,全文索引的索引型別為fulltext。全文索引可以在varchar或者text型別的列上建立。它可以通過create table命令建立,也可以通過alter table或create index命令建立。對於大規模的資料集,通過alter table(或者create index)命令建立全文索引要比把記錄插入帶有全文索引的空表更快。
單列索引與多列索引
建立索引,例如create unique index 《索引的名字》 on tablename (列的列表);
修改表,例如alter table tablename add unique [索引的名字] (列的列表);
建立表的時候指定索引,例如create table tablename ( […], unique [索引的名字] (列的列表)
);
MySQL 普通索引 唯一索引和主索引
1 普通索引 普通索引 由關鍵字key或index定義的索引 的唯一任務是加快對資料的訪問速度。因此,應該只為那些最經常出現在查詢條件 wherecolumn 或排序條件 orderbycolumn 中的資料列建立索引。只要有可能,就應該選擇乙個資料最整齊 最緊湊的資料列 如乙個整數型別的資料列 來...
MySQL 普通索引 唯一索引和主索引
1.普通索引 普通索引 由關鍵字key或index定義的索引 的唯一任務是加快對資料的訪問速度。因此,應該只為那些最經常出現在查詢條件 where column 或排序條件 order by column 中的資料列建立索引。只要有可能,就應該選擇乙個資料最整齊 最緊湊的資料列 如乙個整數型別的資料...
MySQL 普通索引 唯一索引和主索引
1 普通索引 普通索引 由關鍵字key或index定義的索引 的唯一任務是加快對資料的訪問速度。因此,應該只為那些最經常出現在查詢條件 wherecolumn 或排序條件 orderbycolumn 中的資料列建立索引。只要有可能,就應該選擇乙個資料最整齊 最緊湊的資料列 如乙個整數型別的資料列 來...