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