1、合理的建立及使用索引,索引不宜過多,過多的索引會占用更多的空間,而且每次增、刪、改操作都會重建索引。
2、合理的冗餘字段(盡量建一些大表,考慮資料庫的三正規化和業務設計的取捨)。
3、select語句中盡量不要使用*、count(*)。
從表中讀取越多的資料,查詢會變得更慢,因為它會增加了磁碟操作時間和資料網路傳輸時間。
4、合理利用慢查詢日誌、explain執行計畫查詢、show profile檢視sql執行時的資源使用情況。
使用explain關鍵字可以讓你了解mysql正在進行什麼樣的查詢操作,這可以幫助你發現瓶頸的所在,並顯示出查詢或表結構在**出了問題。explain查詢的結果,可以告訴你那些索引正在被引用,表是如何被掃瞄和排序的等等。
5、表關聯查詢時務必遵循小表驅動大表原則。
例: user表10000條資料,class表20條資料
select * from user u left join class c u.userid=c.userid
這樣則需要用user表迴圈10000次才能查詢出來,而如果用class表驅動user表則只需要迴圈20次就能查詢出來。
如果兩個表中乙個較小,乙個是大表,則子查詢表大的用exists,子查詢錶小的用in:
6、使用查詢語 where 條件時,不允許出現函式,否則索引會失效;
7、使用單錶查詢時,相同字段盡量不要用 or和in
8、like 語句不允許使用 like '%xx'或者like '%xx%,否則索引會失效,但是用左字首匹配,"key%"這種方式,仍然會使用索引。
假如索引列name的值為'aba','abb','acc',如果where name like '%ac'條件,由於條件前面是模糊的,所以不能利用索引的順序,必須逐個查詢,看是否滿足條件,這樣會導致全索引掃瞄或者全表掃瞄。
如果是where name ike 'ac%',就可以查詢code中ac開頭的資料,當碰到ab開頭的資料時,就可以停止查詢了,這樣可以提高查詢效率。
9、在mysql建立聯合索引時會遵循最左字首匹配的原則,即最左優先,否則索引會失效;
比如:select * from table where name = '張三' and age = 18,那麼該組合索引必須是 name,age 形式;
示例:對列col1、列col2和列col3建乙個聯合索引 :key test_col1_col2_col3 on test(col1,col2,col3);
聯合索引 test_col1_col2_col3 實際建立了(col1)、(col1,col2)、(col,col2,col3)三個索引。
select * from test where col1='1' and clo2='2' and clo4='4'
上面這個查詢語句執行時會依照最左字首匹配原則,檢索時會使用索引(col1,col2)進行資料匹配。
10、索引長度盡量短。短索引可以節省索引空間,使查詢的速度得到提公升,同時記憶體中也可以裝載更多的索引鍵值。
11、每張表都必須有 主鍵,達到加快查詢效率的目的;
12、分表、分庫、分割槽。
13、如果sql語句中含有order by,那麼建議為此後的列和where字句所含字段建立索引.
mysql效能優化簡書 mysql 效能優化
1 伺服器層面 引數配置優化 減少客戶端使用連線數 可考慮使用快取 2 架構層面 讀寫分離 分庫 分表 分片 3 業務sql層面 檢視慢查詢日誌 sql優化 show variables like slow query 預設關閉 檢視日誌路徑 show variables like long que...
mysql 效能優化簡述
用 explain 分析sql語句。使用max 函式時,給max的字段加索引來優化 把子查詢優化為連表查詢,但要注意有重複資料 優化limit技巧 1.使用有索引的列或主鍵進行order by 2.記錄上一次返回的最大id用where id last max id 來過濾資料 關於索引欄位的優化 出...
mysql效能優化簡單步驟
只有當查詢優化,索引優化,庫表結構優化齊頭並進時,才能實現mysql高效能。在嘗試編寫快速的查詢之前,需要清楚一點,真正重要是響應時間。查詢的生命週期 通常來說,查詢的生命週期大致可以按照順序來看 從客戶端 伺服器 然後再伺服器上進行解析 生成執行計畫 執行 並返回結果給客戶端。其中 執行 可以認為...