MySQL 索引 總結

來源:互聯網
上載者:User

標籤:

1.索引的種類(六種)

  普通索引,唯一索引,全文索引,單列索引,多列索引,空間索引

2.優缺點及注意事項

優點:有了索引,對於記錄數量很多的表,可以提高查詢速度。

缺點:索引是佔用空間的,索引會影響update insert delete速度。

以下列出幾點使用mysql索引的注意事項。

  a、索引要建立在where和join用到的欄位上。

  b、以下操作符號可以應用索引(:<,<=,=,>,>=,BETWEEN,IN,LIKE不以%_開頭)

     以下需要注意不使用索引(<>, NOT IN, LIKE %_開頭)

    <> 可以用 a>1 or a<3 代替,NOT IN 可以用NOT exists代替

  c、在使用max() min()時最好加上索引。

  d、單索引要建立在確實需要的地方。多列索引有最佳左首碼特性,所以盡量左邊的欄位是最常用的。

  e、索引不會包括有NULL值,就是有NULL索引就失效。

  f、使用短索引,一個欄位字太多,可以建立部分索引,只取前十個位元組約空間。

  g、不要在列上運算。例如:where MD5("password") = "myz"。

  h、explain select * from myz 來測試一下語句的效率...

3.儲存引擎和索引儲存類型

  索引儲存類型包含兩種:B樹型索引和HASH型索引

  MyISAM和InnoDB儲存引擎支援B樹型索引;MEMORY支援HASH型索引和B樹型索引,預設是前者。

4.索引的設計原則

  a.選擇唯一性索引

  b.為經常需要排序,分組和聯合操作的列建立索引

  c.為常需要作為查詢條件的欄位建立索引

  d.限制索引的數目

  e.盡量使用資料量少的欄位作為索引

  f.盡量使用首碼作為索引

  g.刪除不常用的或者很少用的索引

5.建立,修改索引的SQL語句

  

CREATE TABLE 表名(屬性名稱 資料類型 [完整性條件約束條件],                 屬性名稱 資料類型 [完整性條件約束條件],                 ......                 [UNIQUE|FULLTEXT|SPATIAL] INDEX|KEY[別名](屬性名稱 [(長度)] [ASC|DESC])                 );

 

 

執行個體

普通索引建立CREATE TABLE index1(id INT,name VARCHAR(20),sex BOOLEAN,INDEX(id));普通索引修改CREATE INDEX index1_id ON index1(id);或ALTER TABLE index1 ADD INDEX index1_id(id);

 

唯一性索引建立CREATE TABLE index2(id INT UNIQUE,name VARCHAR(20),UNIQUE INDEX index2_id(id ASC));唯一性索引修改CREATE UNIQUE index2_id ON index2(id);或ALTER TABLE index2 ADD UNIQUE INDEX index2_id(id);
全文索引建立CREATE TABLE index3(id INT,info VARCHAR(20),FULLTEXT INDEX index3_info(info))ENGINE=MyISAM;全文索引修改CREATE FULLTEXT INDEX index3_info ON index3(info);或ALTER TABLE index3 ADD FULLTEXT INDEX index3_info(info);
單列索引建立CREATE TABLE index4(id INT,subject VARCHAR(20),INDEX index4_st(subject(10)));單列索引修改CREATE INDEX index4_name ON index4(name);或ALTER TABLE index4 ADD INDEX index4_name(name);

 

多列索引建立CREATE TABLE index5(id INT,name VARCHAR(20),sex CHAR(4),INDEX index5_ns(name,sex));多列索引修改CREATE INDEX index5_ns ON index5(name,sex);或ALTER TABLE index5 ADD INDEX index_ns(name,sex);
空間索引建立CREATE TABLE index6(id INT,space GEOMETRY NOT NULL,SPATIAL INDEX index_sp(space))ENGINE=MyISAM;空間索引修改CREATE SPATIAL INDEX index6_sp ON index6(space);或ALTER TABLE index6 ADD SPATIAL INDEX index6_sp(space);

 

 

6.刪除索引

  DROP INDEX 索引名 ON 表名;

 

 

 

 

 

 

 

 

 

 

  

MySQL 索引 總結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.