有些字段的數(shù)據(jù)經常需要修改,增加,刪除,有些字段的數(shù)據(jù)經常需要被查詢,就像不同的人有不同的愛好,我們要投其所好,今天講解的索引就是為了實現(xiàn)差異化對待以上兩種字段,像預處理功能一樣,是一個錦上添花的功能
一.索引-概述
索引是為了快速查找某一字段具有特定值的數(shù)據(jù),如果沒有索引,我們查找某一字段的某個數(shù)據(jù),就需要遍歷,有了索引就像有了字典的目錄,雖然增加了占用的存儲空間,但是查詢速度快了
索引適用于經常需要查找的字段,且數(shù)據(jù)量比較大的情況下,如果某一字段經常要修改,在修改的同時需要動態(tài)修改索引,執(zhí)行效率會慢
1.什么是索引?
索引用于快速找出在某個列中有一特定值的行伟墙,不使用索引屁柏,MySQL必須從第一條記錄開始讀完整個表快毛,直到找出相關的行餐弱,表越大,查詢數(shù)據(jù)所花費的時間就越多姆坚,如果表中查詢的列有一個索引尸昧,MySQL能夠快速到達一個位置去搜索數(shù)據(jù)文件,而不必查看所有數(shù)據(jù)旷偿,那么將會節(jié)省很大一部分時間烹俗。
索引就相當于字典中前幾頁的目錄(拼音/偏旁部首手), 通過目錄我們就能快速的找到想要的結果.
如果沒有索引, 就相當于字典沒有目錄(拼音/偏旁部首手),那么如果想要查找某條數(shù)據(jù)就必須從第一條開始一條一條的查找
2.MySQL中索引的優(yōu)缺點和使用原則
2.1優(yōu)點
+ 所有的MySql字段都可以用作索引
+ 大大加快數(shù)據(jù)的查詢速度
2.2缺點
+ 索引也需要占空間
+ 對表中的數(shù)據(jù)進行增加爆侣、刪除、修改時幢妄,索引也需要動態(tài)的維護兔仰,降低了數(shù)據(jù)的維護速度
2.3原則
+ 對經常用于查詢的字段應該創(chuàng)建索引,
+ 數(shù)據(jù)量小的表最好不要使用索引蕉鸳,索引就可能不會產生優(yōu)化效果乎赴。
By 極客江南
二.索引-分類
一般來說只要設置了主鍵字段,就會自動添加主鍵索引,因為主鍵具有不會被修改不用維護的特性,所以我們一般不會用到索引就是這個原因,因為我們一般可以通過主鍵查詢
3.索引分類
+ 普通索引: MySQL中基本索引類型,沒有什么限制潮尝,允許在定義索引的列中插入重復值和空值榕吼,純粹為了查詢數(shù)據(jù)更快一點。
+ 唯一索引(唯一鍵): 索引列中的值必須是唯一的勉失,但是允許為空值羹蚣,
+ 主鍵索引:是一種特殊的唯一索引,不允許有空值乱凿。
+ ... ...
By 極客江南
三.索引-使用
示例一:
create table test1(
id int,
name varchar(20),
index idx_name(name) #創(chuàng)建索引
);
create table test2(
id int,
name varchar(20),
);
create index idx_name on test2(name); #創(chuàng)建索引
create table test3(
id int,
name varchar(20),
);
alter table test3 add index idx_name(name);
示例二:
create table test4(
id int,
name varchar(20),
unique index idx_name(name) #創(chuàng)建索引
);
create table test5(
id int,
name varchar(20),
);
create unique index idx_name on test5(name); #創(chuàng)建索引
create table test6(
id int,
name varchar(20),
);
alter table test6 add unique index idx_name(name);
By 極客江南
四.索引-刪除
4.刪除索引
drop index idx_name on test6
By 極客江南