mysql 索引分類和用處剖析。本站提示廣大學習愛好者:(mysql 索引分類和用處剖析)文章只能為提供參考,不一定能成為您想要的結果。以下是mysql 索引分類和用處剖析正文
1、 MySQL: 索引以B樹格局保留
Memory存儲引擎可以選擇Hash或BTree索引,Hash索引只能用於=或<=>的等式比擬。
1、通俗索引:create index on Tablename(列的列表)
alter table TableName add index (列的列表)
create table TableName([...], index [IndexName] (列的列表)
2、獨一性索引:create unique index
alter ... add unique
主鍵:一種獨一性索引,必需指定為primary key
3、全文索引:從3.23.23版開端支撐全文索引和全文檢索,FULLTEXT,
可以在char、varchar或text類型的列上創立。
4、單列索引、多列索引:
多個單列索引與單個多列索引的查詢後果分歧,由於:
履行查詢時,MySQL只能應用一個索引,會從多個索引當選擇一個限制最為嚴厲的索引。
5、最左前綴(Leftmost Prefixing):多列索引,例如:fname_lname_age索引,以下的搜刮前提MySQL都將應用
fname_lname_age索引:firstname,lastname,age;firstname,lastname;firstname,其他情形將不應用。
2、依據sql查詢語句肯定創立哪一種類型的索引,若何優化查詢
選擇索引列:
a.機能優化進程中,選擇在哪一個列上創立索引是最主要的步調之一。可以斟酌應用索引的重要有
兩品種型的列:在where子句中湧現的列,在join子句中湧現的列。
b.斟酌列中值的散布,索引的列的基數越年夜,索引的後果越好。
c.應用短索引,假如對字符串列停止索引,應當指定一個前綴長度,可節儉年夜量索引空間,晉升查詢速度。
d.應用最左前綴
e.不要過度索引,只堅持所需的索引。每一個額定的索引都要占用額定的磁盤空間,並下降寫操作的機能。
在修正表的內容時,索引必需停止更新,有時能夠須要重構,是以,索引越多,所花的時光越長。
MySQL只對一下操作符才應用索引:<,<=,=,>,>=,between,in,
和某些時刻的like(不以通配符%或_開首的情況)。
mysql 索引分類
在數據庫表中,對字段樹立索引可以年夜年夜進步查詢速度。經由過程善用這些索引,可以令 MySQL的查詢和運轉加倍高效。索引是疾速搜刮的症結。MySQL索引的樹立關於MySQL的高效運轉是很主要的。上面引見幾種罕見的MySQL索引類型。
1、通俗型索引
這是最根本的索引類型,並且它沒有獨一性之類的限制。通俗索引可以經由過程以下幾種方法創立:
(1)創立索引,例如CREATE INDEX 索引的名字 ON tablename (列名1,列名2,...);
(2)修正表,例如ALTER TABLE tablename ADD INDEX 索引的名字 (列名1,列名2,...);
(3)創立表的時刻指定索引,例如CREATE TABLE tablename ( [...], INDEX 索引的名字 (列名1,列名
2,...) );
2、獨一索引
這類索引和後面的“通俗索引”根本雷同,但有一個差別:索引列的一切值都只能湧現一次,即必需獨一。獨一性索引可以用以下幾種方法創立:
(1)創立索引,例如CREATE UNIQUE INDEX 索引的名字 ON tablename (列的列表);
(2)修正表,例如ALTER TABLE tablename ADD UNIQUE 索引的名字 (列的列表);
(3)創立表的時刻指定索引,例如CREATE TABLE tablename ( [...], UNIQUE 索引的名字 (列的列
表) );
3、主鍵
主鍵是一種獨一性索引,但它必需指定為“PRIMARY KEY”。假如你已經用過AUTO_INCREMENT類型的列,你能夠曾經熟習主鍵之類的概念了。主鍵普通在創立表的時刻指定,例如“CREATE TABLE tablename ( [...], PRIMARY KEY (列的列表) ); ”。然則,我們也能夠經由過程修正表的方法參加主鍵,例如“ALTER TABLE tablename ADD PRIMARY KEY (列的列表); ”。每一個表只能有一個主鍵。 (主鍵相當於聚合索引,是查找最快的索引)
4、單列索引和多列索引
索引可所以單列索引,也能夠是多列索引。
(1)單列索引就是經常使用的一個列字段的索引,罕見的索引。
(2)多列索引就是含有多個列字段的索引
alter table student add index sy(name,age,score);
索引sy就為多列索引,多列索引在以下幾中情形下能力有用:
select * from student where name='jia' and age>='12' //where前提中含有索引的首列字段和
第二個字段
select * from student where name='jia' //where前提中只含有首列字段
select * from student where name='jia' and score<60//where前提中含有首列字段和第三個字
段
總結:多列索引只要在where前提中含有索引中的首列字段時才有用
5、選擇索引列
應當如何選擇索引列,起首要看查詢前提,普通將查詢前提中的列作為索引