mysql索引 使用筆記 mysql索引筆記

2021-10-19 19:46:02 字數 2516 閱讀 2063

mysql索引

一、索引的優缺點

優點:1.通過建立唯一索引,可以保證資料庫表中每一行的唯一性。

2.可以大大加快查詢速度,這是建立索引的最主要原因

4.在使用分組和排序子句進行資料查詢時,也可以顯著減少查詢中分組和查詢的時間

缺點:1.建立索引和維護索引要耗費時間,並且隨著資料量的增加所耗費的時間也會增加。

2.索引需要佔磁碟空間,除了資料表佔資料空間之外,每乙個索引還要佔一定的物理空間,如果有大量的索引,索引檔案可能比資料檔案更快達到最大檔案尺寸。

3.當對表中的資料進行增加、刪除和修改的時候,索引也要動態地維護,這樣就降低了資料的維護速度。

二、索引的分類

1.普通索引和唯一索引

普通索引是mysql中的基本索引型別,允許在定義索引的列中插入重複值和空值。

唯一索引,索引列的值必須唯一,但允許有空值,如果是組合索引,則列值的組合必須唯一。主鍵索引是一種特殊的唯一索引,不允許有空值

2.單列索引和組合索引

單列索引即乙個索引只包含乙個列,乙個表可以有多個單列索引

組合索引指在表的多個字段組合上建立的索引,只有在查詢條件中使用了這些欄位的左邊欄位時,索引才會被使用,組合索引遵循最左原則

3.全文索引

全文索引型別為fulltext,在定義索引的列上支援值得全文查詢,允許在這些索引列中插入重複值和空值。全文索引可以在char、varchar和text型別的列上建立。mysql中只有myisam支援全文索引

4.空間索引

空間索引是對空間資料型別的字段建立的索引,mysql中的空間資料型別有4種,分別是:geometry、point、linestring和polygon.mysql中使用spatial關鍵字進行擴充套件,使得能夠用於建立正規索引類似的語法建立空間索引。建立空間索引的列,必須將其宣告為not null,空間索引只能在myisam中建立

三、索引的設計原則

1.索引並非越多越好,乙個表中如有大量的索引,不僅占用磁碟空間,而且會影響insert、delete、update等語句的效能,因為當表中的資料更改的同時,索引也會進行調整和新。

2.避免對經常更新的表進行過多的索引,並且索引中的列盡可能少。而對經常用於查詢的字段應該建立索引,但要避免新增不必要的字段。

3.資料量小的表最好不要使用索引,由於資料較少,查詢花費的時間可能比遍歷索引的時間還要短,索引可能不會產生優化效果。

4.在條件表示式中經常用到的不同值較多的列上建立索引,在不同值很少的列上不要建立索引。比如在學生表的「性別」欄位上只有「男」與「女」兩個不同值,因此就無須建立索引。如果建立索引不但不會提高查詢效率,反而會嚴重降低資料更新速度。

5.當唯-性是某種資料本身的特徵時,指定唯一索引。使用唯一索引需能確保定義的列的資料完整性,以提高查詢速度。

6.在頻繁進行排序或分組( 即進行group by或order by操作)的列上建立索引,如果待排序的列有多個,可以在這些列上建立組合索引。

四、建立索引,建立索引分為三種方法

1.建立表時指定索引

create table book (

id int primary key auto_increment,  #主鍵自增

name varchar(255) not null unique,  #唯一索引

author varchar(255) not null,

info varchar(255),

comment varchar(255),

year int(11) ,

index (year)  #普通索引

可以定義欄位的時候定義索引,也可以在最後給指定列定義索引

eg:唯一索引:unique index index_name(col)

組合索引 : index index_name(col,col1,col2)

全文索引:fulltext index fulltxtidx(col)------只有myisam支援

空間索引:spatial index spaidx(col)————只有myisam支援

組合索引遵循最左原則:利用索引中最左邊的列集來匹配行。這樣的列集成為最左字首

2.修改表時新增索引

語法: alter table table_name add [ unique | fulltext | spatial] [index | key ] [index_name] (col(length),... )[ asc | desc]

3.為存在的表新增索引

create [unique | fulltext | spatial] index index_name on table_name (col(length))[asc | desc]

eg: alter table `dev_djbisai`.`dj_game_contest_user` add unique index `a`(`status`, `create_time`) using btree comment 'aaaa';

五、刪除索引

1.使用alter table 刪除索引

alter table table_name drop index index_name;

MySQL索引 使用筆記

我們平常所說的索引,如果沒有特別指明,都是指b 樹結構組織的b tree索引。其中聚集索引,次要索引,覆蓋索引,復合索引,字首索引,唯一索引預設都是使用b 樹索引,統稱索引。當然,除了b 樹這種型別的索引之外,還有哈稀索引 hash index 等。這裡主要討論一下innodb b tree索引的使...

mysql使用筆記

mysql安裝 bin mysqld initialize insecure user mysql basedir usr local mysql datadir usr local mysql data mkdir p var run mysqld chown mysql mysql var ru...

MySQL使用筆記

刪除修改 查詢元資料操作 表結構調整 許可權管理 字符集設定 資料匯入和匯出 匯入資料 遠端連線mysql 資料庫備份和複製 mysql 程序資訊 編碼集問題 insert into ticket info buyer openid,ticket date values 000751a016bdbf...