1.執行流程:
2.表結構對效能的影響:
冗餘資料的處理(可以提高系統的整體查詢效能《三正規化》)每一列只能有乙個值
每一行可以被唯一的區分
不包含其他表的已包含的非關鍵資訊
大表拆小表一般不會設計屬性過多的表
一般不會超過500到1000萬資料的表
有大資料的列單獨拆為小表
根據需求展示更加合理的表結構
常用屬性分離為小表
3.sql優化原則:
1、選擇需要優化的sql
2、explain和profile入手
3、使用profile明確sql的問題和優化的結果;
3、永遠用小結果集驅動大的結果集
4、在索引中完成排序
5、使用最小columns
6、使用最有效的過濾條件
7、避免複雜的join和子查詢
4.join的原理:
原理:join的優化原則:
5.執行計畫與執行明細:
6.索引:
1、型別
2、方法
1,b-tree:是一顆樹(二叉樹,平衡二叉樹,平衡樹(b-tree))
使用平衡樹實現索引,是mysql中使用最多的索引型別;在innodb中,存在兩種索引型別,第一種是主鍵索引(primary key),在索引內容中直接儲存資料的位址;第二種是其他索引,在索引內容中儲存的是指向主鍵索引的引用;所以在使用innodb的時候,要盡量的使用主鍵索引,速度非常快;
2,hash:把索引的值做hash運算,並存放到hash表中,使用較少,一般是memory引擎使用;優點:因為使用hash表儲存,按照常理,hash的效能比b-tree效率高很多。
hash索引的缺點:
1,hash索引只能適用於精確的值比較,=,in,或者<>;無法使用範圍查詢;
2,無法使用索引排序;
3,組合hash索引無法使用部分索引;
4,如果大量索引hash值相同,效能較低;
3、建立
4,不會出現在where 子句中的字段不該建立索引;
5, 索引不是越多越好;(只為必要的列建立索引)
MySql優化問題
優化方法 1.設計資料庫時 資料庫表 欄位的設計,儲存引擎 2.利用好mysql自身提供的功能,如索引等 select id from t where num is null可以在num上設定預設值0,確保表中num列沒有null值,然後這樣查詢 select id from t where num...
mysql語句優化問題 MYSQL語句優化
問題 如何從乙個大專案中,迅速的定位執行速度慢的語句.定位慢查詢 1.首先知道mysql一些執行的狀態 比如mysql當前執行的時間 一共執行了多少次select update delete 當前連線數 show status 常用的操作 show status like uptime mysql啟...
mysql優化問題彙總
sql優化 分割槽 分表 垂直分庫 水平分庫 讀寫分離 進入到mysql命令列。mysql u root p show plugins 檢視是否支援分割槽,最後會出現乙個 partition 這個行 表示支援 也可以 show variables like partition show table ...