學習筆記(06):MySQL版SQL優化-SQL優化準備

立即學習:https://edu.csdn.net/course/play/25283/297142?utm_source=blogtoedu

SQL優化:

原因:性能低、執行時間太長、 等待時間太長、SQL語句欠佳(連接查詢)、索引失效、服務器參數設置不合理(緩衝、線程數)

 

a.SQL:

編寫過程:

select ..from .. join ..on .. where  .. group by .. having ..order by ..limit...

解析過程:

from .. on .. join   .. where ..group by .. having .. select ..order by limit ..

b.SQL優化,主要就是優化索引

索引:相當於書的目錄

索引:index  是幫助MYSQL 高效獲取數據的數據結構,索引是數據結構(樹:B樹(mysql默認 )、Hash樹...)

B樹: 

        小的放左邊 

        大的放右邊

 索引弊端:

1.索引本身很大,可以存放在內存、硬盤(通常爲硬盤)

2.索引不是所有情況均適用:a.少量數據  b.頻繁更新的字段   c.很少使用的字段

3.索引會降低增刪改的效率(增刪改          查)

 

優勢:1.提高查詢效率(降低了IO使用率)

2.降低CPU使用率()

 

 

 

3層B樹可以存放上百萬條數據

Btree:有很多類型,一般都是指B+,數據全部存放在葉節點中

 

B+樹種查詢任意的數據次數:n次(B+樹的高度)

 

4.索引

 

 分類:

        單 值索引:單列 ,age  ; 一個表可以多個單值索引  ,name。

           唯一索引:不能重複 。id

          複合索引:多個列構成的索引(相當於  二級目錄;  z: zhao )(name ,age)(a,b,c,d..多列也可以)

 

desc tb(表名);

創建索引:

方式一:

create  索引類型  索引名  on 表(字段)

單值:

create  index  dept_index  on  tb(dept);

唯一:

create  unique index  name_index on tb(name);

複合索引:

create  index dept_name_index on tb(dept,name);

 

 

方式二:alter  table   表名  索引類型  索引名 (字段)

單值:

alter table tb add index dept_index(dept)

唯一:

alter table add unique index name_index(name)

複合:

alter table add index dept_name_index(dept,name)

 

注意:如果一個字段是primary key ,則該字段默認就是  主鍵索引

 

刪除索引:

drop   index   索引名  on  表名

 

查詢索引:

show  index  from 表名

5.SQl性能問題

  a.分析SQL的執行計劃   :explain,可以模擬SQL優化器執行SQL語句,從而讓開發人員知道自己編寫的狀況;

b.MySQL查詢優化其會干擾我們的優化

 

查詢執行計劃:explain + SQL 語句

explain select *  from tb;

 

id: 編號

select_type:查詢類型

table:表

type:類型

possible  keys:預測用到的索引

key:實際使用的索引

key_len:實際使用索引的長度

ref:表之間的引用

rows:通過索引查詢到的數據量

Extra:額外的信息

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章