• select count(*)和select count(1)的区别 (转)


    A

    一般情况下,Select Count (*)和Select Count(1)两着返回结果是一样的

        假如表沒有主键(Primary key), 那么count(1)比count(*)快,

        如果有主键的話,那主键作为count的条件时候count(主键)最快

        如果你的表只有一个字段的话那count(*)就是最快的

       count(*) 跟 count(1) 的结果一样,都包括对NULL的统计,而count(column) 是不包括NULL的统计

     1、select 1 与 select *的区别
    selelct 常量 from ... 对应所有行,返回的永远只有一个值,即常量 。所以正常只会用来判断是否有还是没有(比如exists子句)。而select * from ... 是返回所有行的所有列。
    性能上的差异,关键看你的from和where子句。比如说如果你的where条件中可以通过索引,那显然 select 1 from ... 的性能比 select * from ... 好。
    2、select sum(1)的使用 
    select count(*)返回所有满足条件的记录数,此时同select sum(1)
    但是sum()可以传任意数字,负数、浮点数都可以,返回的值是传入值n*满足条件记录数m


    B

    select count(1) from test
    -- 在没有聚集的情况下,这种查询的效率可能会高一点
    select count(*) from test
    -- 有索引走索引,没索引全表扫描,可以利用表的统计信息
    select count(a) from test
    -- 扫描a列的数据记录数,如果a上没有索引,则效率最差,并且如果a列包含null,则不会计数


    C

    count(1) 是绝对快,它只统计记录条数,对条件下的表扫描一遍而已
    count(*) 是可能快,有主键的时候只扫主键,主键数等于记录数
    count(主键)=count(1)
  • 相关阅读:
    php使用iconv进行从utf8转为gb2312字符编码出错解决方案
    PHP 的 cURL库快速入门文档
    转载 DISCUZ!X1程序目录、文件列表及模板文件结构说明,帮助大家二级开发
    下拉菜单部分选项不允许选择
    Htaccess文件用法集锦
    MYSQL server has gone away解决办法
    Discuz X 模板中获取用户头像
    CSS Hack
    VS轻松保存重复多用的代码片段
    三菱FX PLC编程口通讯协议详解
  • 原文地址:https://www.cnblogs.com/wql025/p/4898690.html
Copyright © 2020-2023  润新知