一、思惟導圖 mysql
二、如何設計一個關係型數據庫?sql
2.1 首先是物理存儲數據庫
2.2 其次是程序方面的邏輯管理:windows
存儲管理、緩存、索引管理、鎖管理...緩存
三、索引模塊數據結構
3.1 爲何要使用索引?工具
避免去全表掃描、提高查詢效率;優化
3.2 什麼信息能夠做爲索引?spa
主鍵、惟一鍵..等能做爲區分數據的字段;設計
3.3 索引的數據結構?
a,使用二叉查找樹進行二分查找
b,使用B樹進行查找
c,使用B+樹進行查找
d,使用hash索引進行查找
3.4 如何定位並優化慢查詢SQL?
a,根據 慢日誌 定位慢查詢SQL
使用SQL語句查看 慢日誌是否開啓、查找慢日誌存儲位置、SQL執行多長時間被記錄:
show variables like '%quer%';
設置慢查詢日誌開啓:
set global slow_query_log=on;
設置SQL查詢時長:
set global log_query_time=1;
【windows經過mysql.ini可永久設置】
查詢 本次會話 慢查詢的數量:
show status like '%slow_queries%';
b,使用explain工具分析SQL
explain 慢查詢的SQL語句;
c,修改SQL,儘可能讓SQL使用索引
3.5 索引是創建的越多越好麼?
不是
a,數據量較小的表不建議創建索引,使用索引會形成額外的開銷;
b,數據表更須要維護索引;
c,索引須要額外的存儲空間;
四、鎖模塊
4.1 MyISAM與InnoDB的區別:
MyISAM默認支持 表級鎖,不支持行級鎖;
InnoDB支持表級鎖、行級鎖;
五、SQL語法:
5.1 group by
5.2 having
一般與group by配合使用;
where過濾行,having過濾組;