1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        除了不要SELECT *,SQL還有哪些優(yōu)化技巧?

        共 1480字,需瀏覽 3分鐘

         ·

        2021-03-02 13:48

        公眾號關注“杰哥的IT之旅”,

        選擇“星標”,重磅干貨,第一時間送達!


        應用程序慢如牛,原因多多,可能是網(wǎng)絡的原因、可能是系統(tǒng)架構(gòu)的原因,還有可能是數(shù)據(jù)庫的原因。

        那么如何提高數(shù)據(jù)庫SQL語句執(zhí)行速度呢?有人會說性能調(diào)優(yōu)是數(shù)據(jù)庫管理員(DBA)的事,然而性能調(diào)優(yōu)跟程序員們也有莫大的關系。

        程序中嵌入的一行行的SQL語句,如果使用了一些優(yōu)化小技巧,定能達到事半功倍的效果。

        技巧1  比較運算符能用 “=”就不用“<>”

        “=”增加了索引的使用幾率。

        技巧2  明知只有一條查詢結(jié)果,那請使用 “LIMIT 1”

        “LIMIT 1”可以避免全表掃描,找到對應結(jié)果就不會再繼續(xù)掃描了。

        技巧3  為列選擇合適的數(shù)據(jù)類型

        能用TINYINT就不用SMALLINT,能用SMALLINT就不用INT,道理你懂的,磁盤和內(nèi)存消耗越小越好嘛。

        技巧4  將大的DELETE,UPDATE or INSERT 查詢變成多個小查詢

        能寫一個幾十行、幾百行的SQL語句是不是顯得逼格很高?然而,為了達到更好的性能以及更好的數(shù)據(jù)控制,你可以將他們變成多個小查詢。

        技巧5  使用UNION ALL 代替 UNION,如果結(jié)果集允許重復的話

        因為 UNION ALL 不去重,效率高于 UNION。

        技巧6  為獲得相同結(jié)果集的多次執(zhí)行,請保持SQL語句前后一致

        這樣做的目的是為了充分利用查詢緩沖。

        比如根據(jù)地域和產(chǎn)品id查詢產(chǎn)品價格,第一次使用了:

        那么第二次同樣的查詢,請保持以上語句的一致性,比如不要將where語句里面的id和region位置調(diào)換順序。

        技巧7  盡量避免使用 “SELECT *”

        如果不查詢表中所有的列,盡量避免使用 SELECT *,因為它會進行全表掃描,不能有效利用索引,增大了數(shù)據(jù)庫服務器的負擔,以及它與應用程序客戶端之間的網(wǎng)絡IO開銷。

        技巧8  WHERE 子句里面的列盡量被索引

        只是“盡量”哦,并不是說所有的列。因地制宜,根據(jù)實際情況進行調(diào)整,因為有時索引太多也會降低性能。

        技巧9  JOIN 子句里面的列盡量被索引

        同樣只是“盡量”哦,并不是說所有的列。

        技巧10  ORDER BY 的列盡量被索引

        ORDER BY的列如果被索引,性能也會更好。

        技巧11  使用 LIMIT 實現(xiàn)分頁邏輯

        不僅提高了性能,同時減少了不必要的數(shù)據(jù)庫和應用間的網(wǎng)絡傳輸。

        技巧12  使用 EXPLAIN 關鍵字去查看執(zhí)行計劃

        EXPLAIN 可以檢查索引使用情況以及掃描的行。

        其他

        SQL調(diào)優(yōu)方法有很多種,同樣的查詢結(jié)果可以有很多種不同的查詢方式。其實最好的方法就是在開發(fā)環(huán)境中用最貼近真實的數(shù)據(jù)集和硬件環(huán)境進行測試,然后再發(fā)布到生產(chǎn)環(huán)境中。


        推薦閱讀

        全面解析 52 條 SQL 語句性能優(yōu)化策略,建議收藏!

        MySQL 常用優(yōu)化指南,及大表優(yōu)化思路都在這了!

        數(shù)據(jù)量很大,分頁查詢很慢,有什么優(yōu)化方案?

        一次超有意思的 SQL 優(yōu)化經(jīng)歷!

        巧用這 19 條 MySQL 優(yōu)化,效率至少提高 3 倍~

        我必須得告訴大家的MySQL優(yōu)化原理

        超全面的 MySQL 優(yōu)化面試解析

        Oracle SQL 性能優(yōu)化40條,必看!

        史上最全 SQL 優(yōu)化方案

        瀏覽 108
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            扒下她的小内裤揉弄在线观看视频 | 女同性疯狂做爰在线观看网站 | 娇妻舞厅里的性呻吟 | 精品国产91久久久久久一区黄 | 欧美成年人网站 | 看国产一级精品美女操逼视频 | www.偷窥久久.com | 成人片全裸直播在线观看 | 日xxxxx | 亚洲视频在线免费播放 |