mysql索引可以分为几种?
MySQL索引的建立對于MySQL的高效運行是很重要的,索引可以大大提高MySQL的檢索速度。
打個比方,如果合理的設(shè)計且使用索引的MySQL是一輛蘭博基尼的話,那么沒有設(shè)計和使用索引的MySQL就是一個人力三輪車。
拿漢語字典的目錄頁(索引)打比方,我們可以按拼音、筆畫、偏旁部首等排序的目錄(索引)快速查找到需要的字。
索引分單列索引和組合索引。單列索引,即一個索引只包含單個列,一個表可以有多個單列索引,但這不是組合索引。組合索引,即一個索引包含多個列。
創(chuàng)建索引時,你需要確保該索引是應(yīng)用在 SQL 查詢語句的條件(一般作為 WHERE 子句的條件)。
實際上,索引也是一張表,該表保存了主鍵與索引字段,并指向?qū)嶓w表的記錄。
上面都在說使用索引的好處,但過多的使用索引將會造成濫用。因此索引也會有它的缺點:雖然索引大大提高了查詢速度,同時卻會降低更新表的速度,如對表進行INSERT、UPDATE和DELETE。因為更新表時,MySQL不僅要保存數(shù)據(jù),還要保存一下索引文件。
建立索引會占用磁盤空間的索引文件。
mysql索引的分類
MySQL索引分為普通索引、唯一索引、主鍵索引、組合索引、全文索引。索引不會包含有null值的列,索引項可以為null(唯一索引、組合索引等),但是只要列中有null值就不會被包含在索引中。
(1)普通索引:create index index_name on table(column);
或者創(chuàng)建表時指定,create table(..., index index_name column);
(2)唯一索引:類似普通索引,索引列的值必須唯一(可以為空,這點和主鍵索引不同)
create unique index index_name on table(column);或者創(chuàng)建表時指定unique index_name?column
(3)主鍵索引:特殊的唯一索引,不允許為空,只能有一個,一般是在建表時指定primary key(column)
(4)組合索引:在多個字段上創(chuàng)建索引,遵循最左前綴原則。alter table t add index index_name(a,b,c);
(5)全文索引:主要用來查找文本中的關(guān)鍵字,不是直接與索引中的值相比較,像是一個搜索引擎,配合match against使用,現(xiàn)在只有char,varchar,text上可以創(chuàng)建全文索引。在數(shù)據(jù)量較大時,先將數(shù)據(jù)放在一張沒有全文索引的表里,然后再利用create index創(chuàng)建全文索引,比先生成全文索引再插入數(shù)據(jù)快很多。
更多相關(guān)知識,請訪問 PHP中文網(wǎng)!!
總結(jié)
以上是生活随笔為你收集整理的mysql索引可以分为几种?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jvm类加载过程有哪些阶段(类的加载过程
- 下一篇: Unity之协程(从Unity)