MySQL查詢效能調最佳化

來源:互聯網
上載者:User

標籤:首碼   資料   使用   沒有   index   btree   hang   分享   原理   

一、索引的概念索引:類似於字典的目錄,設定索引可以 加速資料尋找,對資料進行約束;

 

二、索引類型的類型:主鍵索引:保證資料唯一性,不能重複+不可為空普通索引:加速資料尋找唯一索引:加速尋找+不能從複複合式索引(多列):

 

 

三、索引的工作原理1、索引原理:如果要尋找的資料,沒有設定索引,會從前到後地毯式搜尋資料,如果設定了索引,會單獨建立一張額外表,按某種格式儲存該列資料位元置,方便尋找;
2、索引表的資料的格式 2.1、hash格式:會把列中資料逐一hash成hash值(數字)對應資料的儲存地址; 索引表:
資料hash值(數字) 儲存位置(數字) 888 666 988 4442.2、特點:索引表中的資料,和資料庫表中資料順序不一致了;(hash索引,適合單條資料尋找,不適合範圍查
找) 
Btree格式:二叉樹,左側放比自己小的數字,右側放比自己大的資料 
特點:範圍尋找速度快

 


3、建立索引:


普通索引:

建立索引名 on...表的..列
CREATE INDEX zhanggen on day61.`user`(email);

唯一索引:

create unique index 索引名稱 on 表名(列名)
drop unique index 索引名稱 on 表名

複合式索引(最左首碼匹配):

create unique index 索引名稱 on 表名(列名,列名)
drop unique index 索引名稱 on 表名
create index ix_name_email on userinfo3(name,email,)

名稱:覆蓋索引、合并索引

覆蓋索引:直接在索引檔案裡尋找,無需尋找資料庫檔案使用索引方式;


SELECT id FROM day61.`user` WHERE id=9999;

合并索引:把多個單列索引,聯合使用來尋找資料的方式;

SELECT id FROM day61.`user` WHERE id=9999 AND email="[email protected]";


複合式索引 和 索引合并的區別:

複合式索引:多列製造成一個索引

索引合并:只是使用索引的時候,把多個個單列的索引一起使用;


複合式索引效率 > 索引合并

複合式索引
----(name,email)
select * from userinfo3 where name=‘alex‘ and email=‘asdf‘;
select * from userinfo3 where name=‘alex‘;
索引合并
----name
----email
SELECT * FROM day61.`user` WHERE id=1993 and email=‘[email protected]‘;
select * from userinfo3 where name=‘id=1993‘;
select * from userinfo3 where email=‘[email protected]‘;


應用情境:

兩列經常聯合使用使用聯合索引
索引合并:單列資料 使用索引合并

 

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.