mysql分段查詢語句,sql語句規(guī)范問題有哪些?
語句盡量簡單,不在數據庫做復雜運算;select,insert一定要帶上字段名,不允許select *,優(yōu)化LIMIT分頁:不要用LIMIT start, offset。
2
/7
不允許where后面字段上做運算或者加函數,會導致用不了索引;禁用select for update、 insert……select from、insert TB values……(必須明確給出字段)、order by rand()語法。
3
/7
只用inner join或者left join;禁止用right join。表關聯的on必須有索引,只關聯需要表,只選擇需要的列。
4
/7
復雜查詢拆分簡單查詢;盡量小批量小語句分段執(zhí)行;一個sql不要超過1G的binlog;大事務可以set auto_commit =0 關閉自動提交,但是拒絕濫用,會導致阻塞。
5
/7
拒絕3大類型sql:大SQL (BIG SQL),大事務 (BIG Transaction),大批量 (BIG Batch) ,合理拆分sql。小語句小事務好處:減少鎖、用上多cpu,緩存命中率高
6
/7
語句盡量簡單,不在數據庫做復雜運算,不用存儲過程、函數,大消耗性能的SQL很容易對其他SQL產生影響,MySQL優(yōu)化器不足,處理復雜SQL時容易選擇錯誤執(zhí)行計劃。
7
/7
MySQL沒有SQL級并行、HashJoin、分析函數等特性,處理復雜SQL能力不強;在高并發(fā)的系統中,復雜SQL容易產生鎖問題。