邏輯架構: 1、連接層 2、服務層 3、引擎層(插拔式) 4、存儲層 存儲引擎: 常用的有:MyISAM、InnoDB 查看命令:show variables like '%storage_engine%'; 索引:【單值、複合】 創建索引:create index idx_user_name(索引 ...
邏輯架構:
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圖