mysql索引優化知識點

2021-10-19 11:06:52 字數 1445 閱讀 3423

想要了解索引的優化方式,必須要對索引的底層原理有所了解

索引的用處

索引的分類

面試技術名詞

索引採用的資料結構

索引匹配方式

create table staffs(

id int primary key auto_increment,

name varchar(24) not null default 『』 comment 『姓名』,

age int not null default 0 comment 『年齡』,

pos varchar(20) not null default 『』 comment 『職位』,

add_time timestamp not null default current_timestamp comment 『入職時間』

) charset utf8 comment 『員工記錄表』;

-----------alter table staffs add index idx_nap(name, age, pos);

匹配最左字首

匹配列字首

匹配範圍值

精確匹配某一列並範圍匹配另外一列

只訪問索引的查詢

案例當需要儲存大量的url,並且根據url進行搜尋查詢,如果使用b+樹,儲存的內容就會很大

select id from url where url=""

也可以利用將url使用crc32做雜湊,可以使用以下查詢方式:

select id fom url where url="" and url_crc=crc32("")

此查詢效能較高原因是使用體積很小的索引來完成查詢缺點

非聚簇索引 優勢

案例演示

盡量使用主鍵查詢,而不是其他索引,因此主鍵查詢不會觸發回表查詢

使用字首索引

使用索引掃瞄來排序

union all,in,or都能夠使用索引,但是推薦使用in

範圍列可以用到索引

強制型別轉換會全表掃瞄

create table user(id int,name varchar(10),phone varchar(11));

alter table user add index idx_1(phone);

explain select * from user where phone=『13800001234』;

更新十分頻繁,資料區分度不高的字段上不宜建立索引

建立索引的列,不允許為null,可能會得到不符合預期的結果

當需要進行表連線的時候,最好不要超過三張表,因為需要join的字段,資料型別必須一致

能使用limit的時候盡量使用limit

單錶索引建議控制在5個以內

單索引欄位數不允許超過5個(組合索引)

建立索引的時候應該避免以下錯誤概念

xmind - trial version

Mysql 索引知識點

概述 之前寫過一篇mysql b 樹學習,簡單的介紹了b 數以及mysql使用b 樹的原因,有了這些基礎知識點,對mysql索引的型別以及索引使用的一些技巧,就比較容易理解了。覆蓋索引 建立了乙個輔助索引,如果能直接從這個輔助索引檔案中獲取到資料,而無需去訪問聚集索引 自增主鍵索引 檔案的話,那麼這...

mysql優化相關知識點

所有字段建議設定為非null,從效率和索引上來說,null佔空間並且不走索引,所以請將所有字段設定為非null 有些欄位在程式中設定當值為某個具體數的時候表示為空,但這個數字在程式中又是根據不定值得來的,有可能真正有意義的數字是這個為空的數字,建議將為空的表示做成不在程式範圍的數字 有些表有建立時間...

索引知識點

索引 概念 對資料表中一列或多列的值進行排序後的一種結構,其作用就是提高表中資料的查詢速度。1.普通索引 由key或index定義的索引,是基本索引型別,可以建立任何資料型別中,其值是否唯一和非空由字段本身的約束條件所決定。2.唯一性索引 由unique定義的索引,該索引所在欄位的值必須是唯一的。3...