歲月如哥
          人生非夢(mèng)
          posts - 50,comments - 144,trackbacks - 0
          sybase的Transact-SQL用戶指南是這樣說(shuō)的: count 得出表達(dá)式中非空值的數(shù)量,而 count(*) 得出表中的總行數(shù)。

          select count(LAAY) from K_ZS.. B_MS
          select count(distinct LAAY) from K_ZS.. B_MS
          select count(*) from K_ZS..B_MS

          上面的三條sql在2.106開(kāi)發(fā)庫(kù)上執(zhí)行結(jié)果如下:
          -----------
                61940
          -----------
                  353           
          -----------
                72127

              以前老以為對(duì)同一個(gè)查詢條件,count(fieldname)和count(*)的結(jié)果是一樣的……所以首先要對(duì)count函數(shù)的定義清楚,
          從我們一般使用count函數(shù)的角度,這里最好就是用count(*) 或者count(主鍵),或者是一個(gè)肯定不為null的列,不然結(jié)果就可能少了。

          另外從性能上,在K_MS.. B_MS上做實(shí)驗(yàn),數(shù)據(jù)為1472435條(其中BH為主鍵):
          引用:
          select count(*) from K_MS.. B_MS
            Execution Time 2.
            SQL Server cpu time: 200 ms.  SQL Server elapsed time: 283 ms.

            select count(BH) from K_MS.. B_MS  
            Execution Time 2.
            SQL Server cpu time: 200 ms.  SQL Server elapsed time: 233 ms.
          如果用表中的其他非主鍵字段(其中LAAY、JBFY為索引字段,SPCX普通字段),比如
          引用:
          select count(LAAY) from K_MS.. B_MS
            Execution Time 4.
            SQL Server cpu time: 400 ms.  SQL Server elapsed time: 326 ms.

            select count(SPCX) from K_MS.. B_MS
            Execution Time 194.
            SQL Server cpu time: 19400 ms.  SQL Server elapsed time: 28373 ms.

            select count(JBFY) from K_MS.. B_MS
            Execution Time 16.
            SQL Server cpu time: 1600 ms.  SQL Server elapsed time: 2436 ms.
          多次執(zhí)行以上sql可以得出初步結(jié)論:count(主鍵)最快,count(*)次之,并且兩者性能差異不大;但是如果count其他
          任何非主鍵字段,則速度一般會(huì)比較慢,尤其是哪些非索引字段。
          posted on 2008-08-30 14:51 歲月如歌 閱讀(806) 評(píng)論(1)  編輯  收藏 所屬分類: db

          FeedBack:
          # re: 關(guān)于count函數(shù)[未登錄](méi)
          2009-10-23 10:52 | zero
          李大夫果然牛氣  回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 西华县| 慈溪市| 兖州市| 石棉县| 明水县| 晴隆县| 沁源县| 同江市| 家居| 长治市| 吴堡县| 呼图壁县| 盘山县| 五家渠市| 庄浪县| 郧西县| 三河市| 南川市| 翼城县| 周口市| 东光县| 长沙市| 天气| 巢湖市| 兴文县| 西吉县| 辽阳市| 龙泉市| 新化县| 黄陵县| 邢台县| 伊通| 宣化县| 阿巴嘎旗| 松原市| 北宁市| 托克逊县| 五家渠市| 田阳县| 临泉县| 外汇|