如果数据库中有上万条以上的纪录。SQL语句 和"select count(*) from tablename"相比
"select count(字段名) from tablename"效率能高多少。没有对应的数据表,只能问理论了。大家指教哈。

解决方案 »

  1.   

    还真不知道、猜想应该都差不多!
    如果你count(*)的话、系统应该会选择你表中的主键(或者自动生成的row)来替你数数!
    反正不可能是count(id,name,pass)这样挨个给你数、因为count()函数里面只能有一个参数!
    个人意见、如果我说错了、下面的同志别喷我!!!
      

  2.   

    count()  是不走索引的。。他会自动寻找最小字段进行统计。。 
      

  3.   

    另外统计字段的时候、如果字段的值为空、那么则不统计了!
    假如你表中的5条数据、name字段其中有3条为空、这个时候你count(name)得到的结果就是2!
    如果你真的是想统计name的话这样就很正确、但是你想统计的是表中总共有多少条数据的话、这样就鸟了!
      

  4.   

     自己感觉吧 count(*)走的应该是主键吧 count(字段)就是一个确定的字段吧
     效率不知道 可能*好点 
     个人感觉 继续学习
      

  5.   


    DELIMITER //
    CREATE PROCEDURE CRE()
    BEGIN
    DECLARE COUNT INT DEFAULT 10000;
    SET COUNT=10000;
    WHILE COUNT>0
    INSERT INTO TEST VALUES(COUNT);
    SET COUNT=COUNT-1;
    END WHILE;
    END;
    CALL CRE();存储过程这么写行么。往表里插入一万条数据(全是整数,1到10000)。表只有一个字段。
      

  6.   

    select   getdate()   执行语句 select   getdate() 
      

  7.   

    两个表示的意思就不一样、、、
    就和上面那哥们说的一样、
    如果count(字段)有空值的话
    就不准了 、、
    你可以用count(*) 和count(1)比较、
     我每次都用count(1)
      

  8.   

    count(*) 这样的话 肯定能全部查到
    但count(某个字段) 有些字段是没有值的. 比如说 count(*)是100条数据,但是使用count(某个字段)的话,某列没有值的话 就肯定<100条数据了.优化方式你可以 count(id) 查到索引. 这个是唯一标识么. 肯定比count(*) 快.
      

  9.   

     count(id) 查到索引. 这个是唯一标识么. 肯定比count(*) 
      

  10.   

    上万条? 小case了,几乎比不出差别。具体执行效能要查看数据库的执行计划,不同的数据库是不同的。