mysql 数据库中 count(*),count(1),count(列名)区别和效率问题

    技术2024-01-22  130

    一、执行效果上

    count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULLcount(1)包括了忽略所有列,用1代表代码行,在统计结果的时候,不会忽略列值为NULLcount(列名)只包括列名那一列,在统计结果的时候,会忽略列值为空(这里的空不是只空字符串或者0,而是表示null)的计数,即某个字段值为NULL时,不统计

    二、执行效率上

    列名为主键,count(列名)会比count(1)快列名不为主键,count(1)会比count(列名)快如果表多个列并且没有主键,则 count(1) 的执行效率优于count(*) 如果有主键,则 select count(主键)的执行效率是最优的 如果表只有一个字段,则 select count(*)最优

    三、总结

    要根据不同的业务需求选择使用 count(*),count(1),count(列名) 这三者的其中一个在早期的mysql版本中 count(1) 是比 count(*) 快一些 ,但是新版的mysql对count(*)进行了优化,所以和count(1)效率差不多。

    参考链接:

    count(*) 和 count(1)和count(列名)区别都2020年了,你还不知道count(1)和count(*)谁效率更高吗?count(*)和count(1)的区别和性能分析
    Processed: 0.011, SQL: 9