邏輯架構:
1、連接層
2、服務層
3、引擎層(插拔式)
4、存儲層
存儲引擎:
常用的有:MyISAM、InnoDB
查看命令:show variables like '%storage_engine%';
索引:【單值、復合】
創建索引:create index idx_user_name(索引名字) on user(表名) (name)(字段名)
刪除索引:drop index idx_user_name(索引名字)on user(表名)
CREATE INDEX idx_article_ccv ON article(category_id,comments,views); DROP INDEX idx_article_ccv ON article;
定義:索引是一種數據結構(幫助MySQL高效的獲取數據)
目的:提高查詢效率,可以類比字典【可以理解為排好序的快速查找數據結構】
優勢:提高數據檢索效率,降低數據庫的iO成本;
劣勢:實際上索引也是一種表,它保存的索引字段,是需要占空間的;會降低更新表速度,因為更新表時,MySQL不僅要保存數據還要保存索引文件每次更新添加了索引的字段
分類:
原理:二分查找,類似猜數字游戲【結構:B-TREE(Java主要)、hash、R-TREE】
什么時候該建索引:
如:where后面需要被查詢的字段
什么時候不該建索引:
1、表記錄太少
2、經常增刪改的表或字段
3、數據重復切分布平均的字段【如果某個數據列包含許多重復的內容,為它建立索引就沒有很么實際的效果】
常見的join查詢:
一、SQL執行順序
1 FROM <left_table>
2 ON <join_condition>
3 <join_type>JOIN<right_table>
4 WHERE <where_condition>
5 GROUP BY <group_by_list>
6 HAVING <having_condition>
7 SELECT
8 DISTINCT<select_list>
9 ORDER BY <order_by_condition>
10 LIMIT <limit_number>
二、7種join圖