建立高效能索引 《高效能Mysql》筆記2

2021-08-15 18:58:41 字數 1725 閱讀 7596

crate table people(

last_name varchar(50) not

null,

first_name varchar(50) not

null,

dob date not

null,

gender enum('m','f')not

null,

key(last_name,first_name,dob)

);

b-tree索引的查詢型別:

select * from peole 

where last_name='allen'

and first_name='cuba'

and dob='1960-01-01'

select * from peole 

where last_name='allen'

select * from peole 

where last_name like

'j%'

select * from peole 

where last_name > 'allen'

and last_name < 'barraymore'

select * from peole 

where last_name = 'allen'

and first_name like

'k%'

根據以上幾種情況,我們能發現乙個規律,在組合索引中,無論使用索引的哪些字段查詢,組合索引的第一列總是要用到的,這就是組合索引的最左優先原則。

組合索引的最左優先原則:

select * from people

where last_name='smith'

and first_name like

'j%'

and dob='1976-12-23'

索引大大減少伺服器需要掃瞄的資料量

索引可以幫助伺服器避免排序和臨時表

索引可以將隨機i/o變為順序i/o

select * from actor where actor_id + 1 = 5;
select ... where to_days(current_date) - to_days(date_col) <= 10;
select film_id,actor_id from film_actor

where actor_id = 1

or film_id = 1;

實際上索引的建立是一定要根據查詢條件來設計的:

選擇合適的索引列順序:

介紹聚簇索引也叫聚集索引,並不是一種索引型別,而是一種資料儲存方式。

當表有聚簇索引時,資料放到索引的葉子頁中,但是節點頁只包含索引列。

innodb通過主鍵聚集資料,如果沒有定義主鍵,innodb會選擇乙個唯一的非空索引代替。如果沒有這樣的索引,innodb會隱式定義乙個主鍵來作為聚簇索引。

聚簇索引的優點

聚簇索引的缺點

高效能mysql(一) 建立高效能索引

單列索引和多列索引 單列索引 多個單列索引的選擇問題 多個or條件 多個單列的效能往往效能很低,盡量建立高效的多列索引。多列索引 選擇合適的索引順序 避免範圍條件 在where子句中,in是有效的,範圍條件會導致後面的索引無效!在order by中,範圍條件和in都會導致無法按照索引排序!按照索引順...

mysql高效能索引 mysql高效能索引( )

在開發中,我們知道大多數應用的瓶頸在於sql語句的執行時耗,在這裡並不討論sql語句的安全,僅僅討論高效能sql語句,而與高效能sql語句緊密相連的就是傳說中的 索引。索引 一種工作在儲存引擎端的用於快速找到記錄的一種資料結構。mysql使用索引的方式是 先找到索引的值,再根據索引的值找到資料行。索...

Mysql建立高效能索引

mysql索引的基礎和型別 索引的基礎 1.索引類似於書籍的目錄,要想找到一本書的某個特定主題,需要先查詢書的目錄,定位對應的頁碼 儲存引擎使用類似的方式進行資料查詢,先去索引當中找到對應的值,然後根據匹配的索引找到對應的資料行 索引對效能的影響 大大減少伺服器需要掃瞄的資料量,比如我們資料表中有一...