<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-31  評論-2  文章-0  trackbacks-0

    在處理一個大數據量數據庫的時候
    突然發現mysql對于count(*)的不同處理會造成不同的結果

    比如執行
    SELECT count(*) FROM tablename
    即使對于千萬級別的數據mysql也能非常迅速的返回結果
    而對于
    SELECT count(*) FROM tablename WHERE…..
    mysql的查詢時間開始攀升

    仔細查閱累下手冊,發現當沒有WHERE語句對于整個mysql的表進行count運算的時候
    MyISAM類型的表中保存有總的行數,而當添加有WHERE限定語句的時候Mysql需要對整個表進行檢索
    從而得出count的數值

    突然又想起來看到的不少新興的php程序對于count的處理并沒有很好的意思到這點
    記錄下

    順便提下mysql的DISTINCT的關鍵字有很多你想不到的用處
    1.在count 不重復的記錄的時候能用到
    比如SELECT COUNT( DISTINCT id ) FROM tablename;
    就是計算talbebname表中id不同的記錄有多少條

    2,在需要返回記錄不同的id的具體值的時候可以用
    比如SELECT DISTINCT id FROM tablename;
    返回talbebname表中不同的id的具體的值

    3.上面的情況2對于需要返回mysql表中2列以上的結果時會有歧義
    比如SELECT DISTINCT id, type FROM tablename;
    實際上返回的是 id與type同時不相同的結果,也就是DISTINCT同時作用了兩個字段,必須得id與tyoe都相同的才被排除了,與我們期望的結果不一樣

    4.這時候可以考慮使用group_concat函數來進行排除,不過這個mysql函數是在mysql4.1以上才支持的

    5.其實還有另外一種解決方式,就是使用
    SELECT id, type, count(DISTINCT id) FROM tablename
    雖然這樣的返回結果多了一列無用的count數據(或許你就需要這個我說的無用數據)
    返回的結果是 只有id不同的所有結果和上面的4類型可以互補使用,就是看你需要什么樣的數據了


    posted on 2008-10-07 14:46 xiaoxinchen 閱讀(251) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 成年女人免费视频播放77777| 100部毛片免费全部播放完整| 免费观看美女裸体网站| 一级做a爰片久久毛片免费陪| 精品国产精品久久一区免费式| 亚洲粉嫩美白在线| 成年女人毛片免费视频| 亚洲女女女同性video| 免费精品久久天干天干| 亚洲AV永久无码区成人网站| 日韩免费视频一区二区| 久久亚洲精品无码aⅴ大香| 国产va精品免费观看| 亚洲av永久无码天堂网| 亚洲免费电影网站| 亚洲AV综合色区无码二区爱AV| 成人黄软件网18免费下载成人黄18免费视频 | 美女无遮挡拍拍拍免费视频| 三上悠亚亚洲一区高清| 亚洲免费人成在线视频观看| 国产成人精品高清免费| 香蕉97碰碰视频免费| 亚洲熟妇无码八AV在线播放| 午夜精品射精入后重之免费观看 | yellow视频免费看| 久久精品国产亚洲av麻| 91嫩草免费国产永久入口| 亚洲综合成人婷婷五月网址| 免费国产成人高清视频网站| 免费无码又爽又刺激网站直播 | CAOPORN国产精品免费视频| 亚洲a在线视频视频| 成人无码区免费A片视频WWW| 黄色免费网址在线观看| 亚洲成av人影院| 最近免费中文字幕大全视频| jizz日本免费| 亚洲日本va在线观看| 国产精品成人免费一区二区 | 97视频热人人精品免费| 乱人伦中文视频在线观看免费|