zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    linq的多表查询
    markdown语法
    遍历Hashtable、IDictionary、Dictionary<string, string>
    DOS修改文件夹权限
    kangle 3.2.0 发布,国产开源web服务器
    nat上传文件到google
    黄聪:C#中用ILMerge将所有引用的DLL和exe文件打成一个exe文件,有图解
    UltiDev Web Server Pro
    vs2010 命令行下用 msbuild 发布web站点
    asp.net重启网站
  • 原文地址:https://www.cnblogs.com/wql025/p/4898690.html
Copyright © 2011-2022 走看看