sql優(yōu)化
文章出處:http://hlpi.cn 作者:興邦開發(fā)部
一,、前提
這里的原則只是針對MySQL數(shù)據(jù)庫,其他的數(shù)據(jù)庫某些是殊途同歸,,某些還是存在差異,。我總結(jié)的也是MySQL普遍的規(guī)則,對于某些特殊情況得特殊對待,。在構(gòu)造SQL語句的時候要養(yǎng)成良好的習(xí)慣,。
二、原則總結(jié)
原則1,、僅列出需要查詢的字段,這對速度不會明顯的影響,,主要是考慮節(jié)省應(yīng)用程序服務(wù)器的內(nèi)存,。
原則2、盡量避免在列上做運算,,這樣導(dǎo)致索引失效,。
原則3、使用JOIN 時候,,應(yīng)該用小的結(jié)果驅(qū)動大的結(jié)果(left join 左邊表結(jié)果盡量小 如果有條件應(yīng)該放到左邊先處理,,right join 同理反向),同事盡量把牽涉到多表聯(lián)合的查詢拆分多個query(多個連表查詢效率低,,容易到之后鎖表和阻塞),。
原則 4、注意LIKE 模糊查詢的使用,, 避免使用 %% ,可以使用 后面帶% ,,雙%是不走索引的。
原則5,、使用批量插入節(jié)省交互 (當(dāng)如如果使用存儲過程來處理批量的sql 各種邏輯是更好的選擇),。
原則6、limit 的基數(shù)比較大時使用between,。
原則7,、不要使用rand函數(shù)獲取多條隨機記錄。
原則8,、避免使用NULL,。
原則9. 不要使用 count(id) 使用 count(*)。
原則10,、不要做無謂的排序操作,,而應(yīng)該使用索引完成排序,。