六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

Mysq的一些?經(jīng)常見誤區(qū)

[摘要]常見誤區(qū)count(1)和count(primary_key) 優(yōu)于 count(*)很多人為了統(tǒng)計記錄條數(shù),就使用 count(1) 和 count(primary_key) 而不是 count(*) ,他們認為這樣性能更好,其實這是一個誤區(qū)。對于有些場景,這樣做可能性能會更差,應為數(shù)據(jù)庫對 c...
常見誤區(qū)

    1. count(1)和count(primary_key) 優(yōu)于 count(*)

    很多人為了統(tǒng)計記錄條數(shù),就使用 count(1) 和 count(primary_key) 而不是 count(*) ,他們認為這樣性能更好,其實這是一個誤區(qū)。對于有些場景,這樣做可能性能會更差,應為數(shù)據(jù)庫對 count(*) 計數(shù)操作做了一些特別的優(yōu)化。
      1. count(column) 和 count(*) 是一樣的

      這個誤區(qū)甚至在很多的資深工程師或者是 DBA 中都普遍存在,很多人都會認為這是理所當然的。實際上,count(column) 和 count(*) 是一個完全不一樣的操作,所代表的意義也完全不一樣。
      count(column) 是表示結果集中有多少個column字段不為空的記錄
      count(*) 是表示整個結果集有多少條記錄
        1. select a,b from … 比 select a,b,c from … 可以讓數(shù)據(jù)庫訪問更少的數(shù)據(jù)量

        這個誤區(qū)主要存在于大量的開發(fā)人員中,主要原因是對數(shù)據(jù)庫的存儲原理不是太了解。
        實際上,大多數(shù)關系型數(shù)據(jù)庫都是按照行(row)的方式存儲,而數(shù)據(jù)存取操作都是以一個固定大小的IO單元(被稱作 block 或者 page)為單位,一般為4KB,8KB… 大多數(shù)時候,每個IO單元中存儲了多行,每行都是存儲了該行的所有字段(lob等特殊類型字段除外)。
        所以,我們是取一個字段還是多個字段,實際上數(shù)據(jù)庫在表中需要訪問的數(shù)據(jù)量其實是一樣的。
        當然,也有例外情況,那就是我們的這個查詢在索引中就可以完成,也就是說當只取 a,b兩個字段的時候,不需要回表,而c這個字段不在使用的索引中,需要回表取得其數(shù)據(jù)。在這樣的情況下,二者的IO量會有較大差異。
          1. order by 一定需要排序操作

          我們知道索引數(shù)據(jù)實際上是有序的,如果我們的需要的數(shù)據(jù)和某個索引的順序一致,而且我們的查詢又通過這個索引來執(zhí)行,那么數(shù)據(jù)庫一般會省略排序操作,而直接將數(shù)據(jù)返回,因為數(shù)據(jù)庫知道數(shù)據(jù)已經(jīng)滿足我們的排序需求了。
          實際上,利用索引來優(yōu)化有排序需求的 SQL,是一個非常重要的優(yōu)化手段
          延伸閱讀:MySQL ORDER BY 的實現(xiàn)分析 ,MySQL 中 GROUP BY 基本實現(xiàn)原理 以及 MySQL DISTINCT 的基本實現(xiàn)原理 這3篇文章中有更為深入的分析,尤其是第一篇
            1. 執(zhí)行計劃中有 filesort 就會進行磁盤文件排序

            有這個誤區(qū)其實并不能怪我們,而是因為 MySQL 開發(fā)者在用詞方面的問題。filesort 是我們在使用 explain 命令查看一條 SQL 的執(zhí)行計劃的時候可能會看到在 “Extra” 一列顯示的信息。
            實際上,只要一條 SQL 語句需要進行排序操作,都會顯示“Using filesort”,這并不表示就會有文件排序操作。
            延伸閱讀:理解 MySQL Explain 命令輸出中的filesort,我在這里有更為詳細的介紹
            • 基本原則

              1. 盡量少 join

              MySQL 的優(yōu)勢在于簡單,但這在某些方面其實也是其劣勢。MySQL 優(yōu)化器效率高,但是由于其統(tǒng)計信息的量有限,優(yōu)化器工作過程出現(xiàn)偏差的可能性也就更多。對于復雜的多表 Join,一方面由于其優(yōu)化器受限,再者在 Join 這方面所下的功夫還不夠,所以性能表現(xiàn)離 Oracle 等關系型數(shù)據(jù)庫前輩還是有一定距離。但如果是簡單的單表查詢,這一差距就會極小甚至在有些場景下要優(yōu)于這些數(shù)據(jù)庫前輩。
                1. 盡量少排序

                排序操作會消耗較多的 CPU 資源,所以減少排序可以在緩存命中率高等 IO 能力足夠的場景下會較大影響 SQL 的響應時間。
                對于MySQL來說,減少排序有多種辦法,比如:
                • 上面誤區(qū)中提到的通過利用索引來排序的方式進行優(yōu)化

                • 減少參與排序的記錄條數(shù)

                • 非必要不對數(shù)據(jù)進行排序

                • 避免使用耗費資源的操作,帶有DISTINCT,UNION,MINUS,INTERSECT,ORDER BY的SQL語句會啟動SQL引擎 執(zhí)行,耗費資源的排序(SORT)功能. DISTINCT需要一次排序操作, 而其他的至少需要執(zhí)行兩次排序

                以上就是Mysq的一些?常見誤區(qū)的詳細內容,更多請關注php中文網(wǎng)其它相關文章!


                學習教程快速掌握從入門到精通的SQL知識。




                主站蜘蛛池模板: 天美传媒影视在线网址 | 亚洲高清毛片 | 日韩专区亚洲国产精品 | 青春草在线 | 欧美亚洲h在线一区二区 | 色婷婷天天综合在线 | 日韩福利视频高清免费看 | 五月天丁香婷婷综合久久 | 欧美伊久线香蕉线新在线 | 三级黄色在线免费观看 | 亚洲国产成a人v在线 | 污污小视频在线观看 | 日韩在线小视频 | 午夜视频h | 新香蕉视频在线 | 任我鲁这里有精品视频在线播 | 天堂网中文在线 | 欧洲一区麻豆文化传媒 | 伊人青| 亚洲综合免费视频 | 亚洲第一免费网站 | 婷婷色九月综合激情丁香 | 日本在线观看永久免费网站 | 日韩欧美国产一区二区三区 | 亚洲国产日韩在线观频 | 日本午夜视频在线观看 | 五月婷婷亚洲 | 日本免费不卡视频一区二区三区 | 亚洲第一区精品观看 | 亚洲日韩中文字幕一区 | 速度与激情9全集免费观看 速度与激情9免费完整版高清 | 香蕉视频日本 | 一a一级片 | 三级aa| 色吧五月婷婷 | 亚洲成a人v欧美综合天堂软件 | 四虎成人在线视频 | 日本高清一区二区三区水蜜桃 | 午夜性爽快免费视频播放 | 亚洲日本欧美日韩高观看 | 天天插天天爱 |