激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频

SQL語(yǔ)句編寫(xiě)與優(yōu)化規范

時(shí)間:2024-09-23 19:55:26 SQL 我要投稿
  • 相關(guān)推薦

SQL語(yǔ)句編寫(xiě)與優(yōu)化規范

  1 用SELECT查詢(xún)用具體字段代替“*”,且盡可能只查詢(xún)需要的字段。

  2 多表查詢(xún)時(shí),使用表的別名,就可以減少解析的時(shí)間并減少那些由列名歧義引起的語(yǔ)法錯誤

  3 用EXISTS替代IN,用NOT EXISTS替代NOT IN

  4 WHERE條件連接順序,把表關(guān)系寫(xiě)在最前

  例如Oracle采用自下而上的順序解析WHERE子句,表之間的條件連接必須寫(xiě)在其他條件之前,把可以過(guò)濾掉大量數據的條件寫(xiě)在WHERE子句的最后,按照過(guò)濾記錄數量的多少

  5 刪除全表時(shí),用TRUNCATE替代DELETE

  當刪除表中的記錄時(shí),在通常情況下, 回滾段(rollback segments ) 用來(lái)存放可以被恢復的信息. 如果你沒(méi)有COMMIT事務(wù),ORACLE會(huì )將數據恢復到刪除之前的狀態(tài)(準確地說(shuō)是恢復到執行刪除命令之前的狀況) 而當運用TRUNCATE時(shí), 回滾段不再存放任何可被恢復的信息.

  當命令運行后,數據不能被恢復.因此很少的資源被調用,執行時(shí)間也會(huì )很短。但只有在刪除全.表數據時(shí)才這樣使用。 ...

  6 盡可能多的使用commit

  對于執行,update,語(yǔ)句時(shí)盡量多commit,因為系統性能會(huì )因commit釋放的資源而大大提高。注意事務(wù)的處理,因為commit的數據是不允許回滾的。

  7 優(yōu)化GROUP BY

  為提高GROUP BY的效率,可以將不需要的數據在GROUP BY之前過(guò)濾掉,減少由于數據量大而帶來(lái)的性能損耗。同時(shí)避免使用HAVING子句,HAVING只會(huì )在檢索出所有記錄之后才對結果集進(jìn)行過(guò)濾,這個(gè)處理需要排序、統計等操作。如果能通過(guò)WHERE子句限制記

  8 ORDER BY字段需建立索引

  ORDER BY語(yǔ)句以找出非索引項或者表達式,它們會(huì )降低性能。解決這個(gè)問(wèn)題的辦法就是重寫(xiě)ORDER BY語(yǔ)句以使用索引,也可以為所使用的列建立另外一個(gè)索引,同時(shí)應絕對避免在order by子句中使用表達式。

  9 有條件的使用union-all 替代union

  這樣做效率會(huì )提高3到5倍。

  10 IS NULL 與 IS NOT NULL(索引失效)

  不能用null作索引,任何包含null值的列都將不會(huì )被包含在索引中。即使索引有多列這樣的情況下,只要這些列中有一列含有null,該列就會(huì )從索引中排除。也就是說(shuō)如果某列存在空值,即使對該列建索引也不會(huì )提高性能。

  任何在where子句中使用is null或is not null的語(yǔ)句優(yōu)化器是不允許使用索引的。

  11 對于有聯(lián)接的列,即使最后的聯(lián)接值為一個(gè)靜態(tài)值,優(yōu)化器是不會(huì )使用索引的。(索引失效)

  12 避免使用帶通配符的LIKE查詢(xún)(索引失效)

  之前我認為只要含有“%”的LIKE查詢(xún)索引就會(huì )失效,經(jīng)過(guò)網(wǎng)絡(luò )資料查詢(xún),說(shuō)只有“%”13 注意or條件查詢(xún),兩邊條件必須均建立索引才會(huì )生效(索引失效)

  14 避免在索引列上使用函數或計算,如果索引是函數的一部分,則優(yōu)化器不會(huì )使用索引。(索引失效)

  15 避免使用not、!=、<>(索引失效)

  索引只能告訴什么存在于表中,不能告訴我們什么不存在,當數據庫遇到not、!=、<>時(shí),索引會(huì )失效而去進(jìn)行全表掃描。用“>=”代替“>”

  總結

  原則上,應該盡可能的減少與數據庫的交互,但不意味著(zhù)要寫(xiě)一個(gè)龐大復雜的SQL來(lái)獲取所有需要的數據。對于復雜或訪(fǎng)問(wèn)量頻繁的功能,可以考慮借助緩存來(lái)提升性能。對于表數據量過(guò)于龐大而且持續增長(cháng),考慮歸檔歷史,分開(kāi)查詢(xún);如果仍然無(wú)法提升性能,則可以從增加硬件來(lái)改善,如讀寫(xiě)分離、數據庫集群等方案。

  在拼寫(xiě)SQL時(shí),盡可能的將SQL拆解為簡(jiǎn)單易讀的SQL,對于復雜邏輯可以借助程序來(lái)協(xié)同完成,一方面執行效率不一定低,另一方面也給未來(lái)的運維、修改帶來(lái)便捷。如果設計原因導致關(guān)聯(lián)表略多,考慮視圖、拆解、輔助表的方式來(lái)簡(jiǎn)化查詢(xún),降低SQL復雜度,減少表關(guān)聯(lián)查詢(xún)的數量(少于5表),且盡可能少用子查詢(xún),視圖嵌套不要超過(guò)2層。

  

【SQL語(yǔ)句編寫(xiě)與優(yōu)化規范】相關(guān)文章:

SQL優(yōu)化大全09-09

oracle的sql語(yǔ)句01-21

SQL查詢(xún)語(yǔ)句大全10-24

SQL語(yǔ)句的理解原則10-05

mysql SQL語(yǔ)句積累參考10-02

sql語(yǔ)句的各種模糊查詢(xún)08-25

Oracle的sql語(yǔ)句模擬試題及答案10-12

SQL語(yǔ)句中的正則表達示07-28

J2EE項目代碼編寫(xiě)規范01-23

2016最新J2EE中SQL語(yǔ)句自動(dòng)構造方法08-02

激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频