SQL的優化

對查詢進行優化,要儘可能避免全表掃描,首先應考慮在 where 及 order by 涉及的列上創建索引。mysql

對查詢進行優化,要儘可能避免全表掃描,首先應考慮在進行條件判斷的字段上建立了索引。sql

應儘可能避免在where子句中對字段進行null值判斷,使用!= 或 <>操做符等,不然將致使引擎放棄使用索引而進行全表掃描。數據庫

也不能在where子句中使用or來鏈接條件(應該用union  all來使用兩個語句),若是一個字段有索引另一個字段沒有索引也會致使引擎放棄使用索引而進行全表掃描。性能

not in應該慎用  ,  用not exists代替not in大數據

(mysql中)模糊查詢避免使用「%」優化

避免在where子句中進行表達式計算操做日誌

在使用索引字段做爲條件是,若是該索引是複合索引那麼必須使用到該索引中第一個字段做爲條件時才能保證系統使用了索引(最左原則) ,不然該索引將不會被使用,而且應該儘量的讓字段順序和索引順序一致。所謂複合索引就是建立一個索引的時候做用在多個字段上。索引

updata語句,若是隻更改一兩個字段,不要update所有字段,不然頻繁調用會引發明顯的性能消耗,同時帶來大量日誌。字符串

對於多張大數據量(這裏幾百條算大了)的錶鏈接,能夠考慮使用程序去實現,不要作鏈接查詢,就是儘可能避開多表查詢。io

索引並非越多越好,索引當然能夠提升相應的select的效率,但同時也下降了insert及update的效率,由於insert或update時有可能會重建索引,索引怎麼樣建索引須要慎重考慮,視具體狀況而定。

儘可能使用數字型字段,若只會數值信息的字段儘可能不要設置爲字符型,這回下降插敘和鏈接的性能,並會增長存儲開銷,這是由於引擎在處理查詢和鏈接是會逐個比較字符串中每個字符,而對於數據型而言只須要比較一次就夠了。

任何地方都不要使用select*from,用具體的字段代替「*」,不要返回用不到的任何字段。

學會使用慢查詢來進行數據庫的優化。

相關文章
相關標籤/搜索