資料庫優化
關于資料庫優化分可以以下幾個方面來講
先說幾個小的注意點
當表中無主鍵時,首先判斷表中是否有非空的整形唯一索引,如果有,則該列為主鍵,如果不符合上述條件,InnoDB存盤引擎自動創建一個6byte自增主鍵,且_rowid無法被查詢到,如果使用int型別自增主鍵為4byte,所以在創建表時,必選顯式地指定主鍵
我們平時使用的mysql的引擎時innodb,是mysql四種引擎中唯一支持事務的
一張表有且只有一個聚集索引就是主鍵
最左匹配原則
離散型、選擇性最好的列放在最左邊
mysql索引底層實作是B+tree
資料庫相關引數的調優
1、可視情況開啟快取查詢,開啟快取查詢后,當表內資料和欄位沒有變化時,相同sql查詢結果會從mysql快取中讀取,不會再次查詢可提高效率
tips:即使sql相同但編碼不同的查詢陳述句,也會被mysql認為是兩個查詢,會重新查詢
2、設定最大連接數,默認為100,最大為16384(超過的無效)
存盤程序
可根據實際業務需求適應存盤程序
sql陳述句
sql陳述句的優化最主要的就是避免全表掃描
1、避免select * 的存在,會導致全表掃描,同時也會增加io負擔
2、在可以確定只存在一個查詢結果或者判斷庫中有無符合條件資料時,使用limit 1來限定查詢結果,limit 1會在查詢到一條資訊后停止查詢回傳結果,而不是繼續往后查詢下一條符合條件的資料,即使用select 1 from table where condition limit 1,來代替select count
3、like本身效率就比較低,所以應該盡量避免使用like,左like無法使用索引,右like可以
4、避免在where子句中對欄位進行null判斷,使用null會導致全表掃描
5、在照顧到實際業務需求的同時,在where、order by和join涉及的列上建立索引
6、使用UNION ALL 代替 UNION,如果結果集允許重復的話,UNION會去重效率較低
總結
SQL 優化的實質就是了解優化器的作業原理,盡可能的使用符合優化器作業原理的sql和索引
表的優化
欄位的選擇
為列選擇合適的資料型別
1、在varchar和char中選擇時,應盡量選擇char,定長欄位查詢比可變長度欄位快,簡言之就是空間換時間
2、能用TINYINT就不用SMALLINT,能用SMALLINT就不用INT,磁盤和記憶體消耗越小越好
索引
索引是幫助mysql更加高效獲取資料的資料結構,索引建立的應該遵循一下幾個原則
1、where后面匹配的索引關鍵字列越多越好,掃描的資料越精確越少越好(通過索引篩選出的資料越少越好)
2、避免再次排序
3、盡可能的使用覆寫索引,減少回表操作
覆寫索引
當sql陳述句的所求查詢欄位(select列)和查詢條件欄位(where子句)全都包含在一個索引中 (聯合索引),可以直接使用索引查詢而不需要回表,這就是覆寫索引,通過使用覆寫索引,可以減少搜索樹的次數,這就是 覆寫索引,
分庫分表
暫時不太了解,先按下不表
才疏學淺斗膽在此拋磚引玉,還望各路大神口下留情
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/190512.html
標籤:其他
下一篇:MySQL炒雞詳細常用語法陳述句
