索引和SQL查詢優化(待補充)

2021-06-20 19:06:30 字數 1288 閱讀 4917

參考書 《高效能 mysql》

書中索引和sql的優化經驗不但適用於my

sql,大部分也適用於postgresql、oracle、db2、sqlserver,以及mongodb。

一.索引型別

1.b樹索引

2.雜湊索引

3.空間索引(地理空間資料)

4.全文索引

二.索引使用策略

1.欄位中不應該有表示式

低效:select * from foo where id + 1 = 8

高效:select * from foo where id = 7

低效: select * from foo where to_days('2012-12-12') -to_days(date_col) <=10

高效: select * from foowhere 

date_col> 

date_sub('2012-12-12',interval10 day)

2.字首索引

3.聚集索引

4.覆蓋索引

三、sql優化

1.不要提取不需要的列

2.表連線的查詢一般比子查詢更快

3.優化表連線:

確保on或using使用的列上有索引

確保group by 和 order by 只引用乙個表上的列,這樣mysql會嘗試使用索引

筆記 索引和SQL查詢優化(待補充)

參考書 高效能 mysql 書中索引和sql的優化經驗不但適用於mysql,大部分也適用於postgresql oracle db2 sqlserver,以及mongodb。一.索引型別 1.b樹索引 2.雜湊索引 3.空間索引 地理空間資料 4.全文索引 二.索引使用策略 1.欄位中不應該有表示式...

二分查詢(待補充)

二分查詢演算法是在有序陣列中用到的較為頻繁的一種演算法,在未接觸二分查詢演算法時,最通用的一種做法是,對陣列進行遍歷,跟每個元素進行比較,其時間為o n 但二分查詢演算法則更優,因為其查詢時間為o lgn 譬如陣列,查詢元素6,用二分查詢的演算法執行的話,其順序為 1.第一步查詢中間元素,即5,由於...

MySQL資料查詢(待補充)

select from table name 如果資料表中的列較少,也可以通過列出所有列名的方式獲取資料。select 列名列表 from table name 各列名以逗號隔開 當表或者列名的名稱比較長時,使用別名很有用。在 select 語句查詢中,可以使用以下任意一種方式為列指定別名。1 採用...