SELECT COUT(主键)、count(1)、count(*)的区别

解决方案 »

  1.   

    根据explian 得出结论 没区别mysql> explain select count(1) from table1;
    +----+-------------+-------+------+---------------+------+---------+------+------+------------------------------+
    | id | select_type | table | type | possible_keys | key  | key_len | ref  | rows | Extra                        |
    +----+-------------+-------+------+---------------+------+---------+------+------+------------------------------+
    |  1 | SIMPLE      | NULL  | NULL | NULL          | NULL | NULL    | NULL | NULL | Select tables optimized away | 
    +----+-------------+-------+------+---------------+------+---------+------+------+------------------------------+
    1 row in set (0.00 sec)mysql> explain select count(*) from table1; 
    +----+-------------+-------+------+---------------+------+---------+------+------+------------------------------+
    | id | select_type | table | type | possible_keys | key  | key_len | ref  | rows | Extra                        |
    +----+-------------+-------+------+---------------+------+---------+------+------+------------------------------+
    |  1 | SIMPLE      | NULL  | NULL | NULL          | NULL | NULL    | NULL | NULL | Select tables optimized away | 
    +----+-------------+-------+------+---------------+------+---------+------+------+------------------------------+
    1 row in set (0.00 sec)mysql> explain select count(id) from table1; 
    +----+-------------+-------+------+---------------+------+---------+------+------+------------------------------+
    | id | select_type | table | type | possible_keys | key  | key_len | ref  | rows | Extra                        |
    +----+-------------+-------+------+---------------+------+---------+------+------+------------------------------+
    |  1 | SIMPLE      | NULL  | NULL | NULL          | NULL | NULL    | NULL | NULL | Select tables optimized away | 
    +----+-------------+-------+------+---------------+------+---------+------+------+------------------------------+
      

  2.   

    返回table表里面的记录总数
    select count(1) from table的效率更好。
      

  3.   

    select cout(主键),好像没有见过。
    其他两个能得出相同结果。
      

  4.   

    不是吧,COUNT(*)count(1)是算NULL行的,其它不算NULL
      

  5.   

    如果只是主键,那么3个SQL语句结果是一致的,因为主键不能为NULL,如是其它字段,且有NULL的话,结果是
    有区别的
      

  6.   

    增加一条有NULL的记录测试一下就知道
      

  7.   

    增加一条有NULL的记录测试一下就知道测了,都一样!50000条数据