基本概要html
1.查詢的模糊匹配時,避免使用Like '%開頭',使得索引失效shell
2.索引問題緩存
◆ 避免對索引字段進行運算操做和使用函數性能優化
◆ 避免在索引字段上使用not,<>,!=併發
◆ 避免在索引列上使用IS NULL和IS NOT NULL函數
◆ 避免在索引列上出現數據類型轉換性能
◆ 避免創建索引的列中使用空值 索引須要慎重考慮優化
◆ 建索引須要慎重考慮,最好不要超過6個,已經建好的在這基礎上建.net
3.複雜操做:嵌套多級子查詢,拆分紅幾步,能夠生成一些臨時數據表,再進行關聯操做htm
4.Update:同一張表的修改避免屢次,而且不要Update所有字段
5.在能夠使用UNION ALL的語句裏,使用了UNION
6.對Where 語句的法則:
(1)避免在WHERE子句中使用in,not in,or 或者having,能夠使用 exist 和not exist代替
(2) 不要以字符格式聲明數字,會使得索引無效;
7.對Select語句的法則,避免使用*
8.排序:避免使用耗費資源的操做,帶有DISTINCT,UNION,MINUS,INTERSECT,ORDER BY的SQL語句會啓動SQL引擎 執行,耗費資源的排序(SORT)功能. DISTINCT須要一次排序操做, 而其餘的至少須要執行兩次排序
————
9.先 truncate後 drop
10.儘可能避免大事務操做,提升系統併發能力
————
11.訪問頻繁而且不太會改變的數據設置緩存
12.EXPLAIN 你的 SELECT 查詢
13.LIMIT限制須要的行數
14.Where子句字段設置索引
15.選擇正確的存儲引擎
參考歸納:
SQL性能優化十條經驗:http://database.51cto.com/art/200904/118526.htm
MYSQL性能優化的最佳20+條經驗:https://coolshell.cn/articles/1846.html
SQL優化大總結之 百萬級方案:http://www.javashuo.com/article/p-fxaxlhna-y.html