SQL那麽普遍,很多人都在用。暉聲暉色的經驗值得學習。
謝謝他的無私奉獻讓大家分享
在應用係統開發初期,由於數據庫的數據比較少體現不出SQL語句各種寫法的性能優劣,但是如果將應用係統提交實際應用後,隨著數據庫數據的增加,係統的響應速度就成為需要解決的最重要的問題之一。係統優化中一個很重要的方麵就是SQL語句的優化。對於海量數據,劣質SQL語句和優質SQL語句之間的速度差別可以達到上百倍甚至更多,可見對於一個係統不是簡單地能實現其功能就可,而是要寫出高質量的SQL語句,提高係統的可用性。常見的編寫高質量的SQL語句的原則如下。
- 不要在SQL語句中使用係統默認的保留關鍵字;
- 盡量用EXISTS和NOT EXISTS代替IN和NOT IN;
- 盡量不用SELECT * FROM ... 而要寫字段名SELECT field1,field2,...;
- 在SQL查詢中盡量使用索引列來加快查詢速度;
- ORDER BY語句決定了如何對返回的查詢結果進行排序。Order by語句對要排序的列沒有什麽特別的限製,也可以將函數加入列中。任何在Order by語句的非索引項或者有計算表達式都將降低查詢速度。重寫order by語句以使用索引,也可以為所使用的列建立另外一個索引,同時應絕對避免在order by子句中使用表達式;
- 任何在where子句中使用is null或is not null的語句不允許使用索引,所以執行的效率較低;
- 通配符(%)在搜尋詞首出現,係統不使用索引,如此使用會降低查詢速度。當通配符出現在字符串其他位置時,優化器就能利用索引;
- 在海量數據的SQL查詢語句中盡量少用格式轉換;
- 任何對列的操作都將導致表掃描,它包括數據庫函數、計算表達式等等,查詢時要盡可能將操作移至等號右邊;
- IN、OR子句常會使用工作表,使索引失效。如果不產生大量重複值,可以考慮把子句拆開。拆開的子句中應該包含索引。
如果您能登陸多維博克,敬請剪貼我的這一信息到那裏的魚翔淺底博克的寓言《河狸》一文之後。