SQL优化(6):count优化

这篇具有很好参考价值的文章主要介绍了SQL优化(6):count优化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 概述

select count(*) from tb_user ;

在之前的测试中,我们发现,如果数据量很大,在执行count操作时,是非常耗时的。

  • MyISAM 引擎把一个表的总行数存在了磁盘上,因此执行 count(*) 的时候会直接返回这个数,效率很高; 但是如果是带条件的count,MyISAM也慢。
  • InnoDB 引擎就麻烦了,它执行 count(*) 的时候,需要把数据一行一行地从引擎里面读出来,然后累积计数。

如果说要大幅度提升InnoDB表的count效率,主要的优化思路:自己计数(可以借助于redis这样的数据库进行,但是如果是带条件的count又比较麻烦了)。

2 count用法

count() 是一个聚合函数,对于返回的结果集,一行行地判断,如果 count 函数的参数不是NULL,累计值就加 1,否则不加,最后返回累计值。

用法:count(*)、count(主键)、count(字段)、count(数字)

count用法

含义

count(主键)

InnoDB文章来源地址https://www.toymoban.com/news/detail-425362.html

到了这里,关于SQL优化(6):count优化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vivado报错 Validation Failed:User configuration exceeds BRAM count in the selected device!

    最近课设,使用vivado调用一个rom的IP,但是报错如上,从网上查阅说是FPGA的资源不够,但是我的资源量肯定是足够的,为此,不得其解,经猜测试验,最终问题是由于给的深度(下图中的Port A Depth)大于存储的数据量太多;将深度减少部分即可;  

    2024年02月14日
    浏览(46)
  • SQL count(1)、count(*) 与 count(列名) 到底有什么区别?

    count(*) 和 count(1)和count(列名)区别 执行效果上: count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略为NULL的值。 count(1)包括了忽略所有列,用1代表代码行,在统计结果的时候,不会忽略为NULL的值。 count(列名)只包括列名那一列,在统计结果的时候,会忽略列值

    2024年02月11日
    浏览(36)
  • SQL COUNT() 函数

    COUNT() 函数返回匹配指定条件的行数。 SQL COUNT(column_name) 语法 COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入): SELECT COUNT(column_name) FROM table_name; SQL COUNT(*) 语法 COUNT(*) 函数返回表中的记录数: SELECT COUNT(*) FROM table_name; SQL COUNT(DISTINCT column_name) 语法 COUNT(DISTINCT column_

    2024年02月08日
    浏览(39)
  • 【SQL】COUNT()函数 用法详解

    COUNT函数用法: COUNT ( [ALL | DISTINCT] column | expression | *) ALL指示统计所有值,而DISTINCT强制函数仅对不同的值进行操作。 默认情况下,使用ALL选项。 条件表达式 COUNT()函数中条件表达式加 OR null。例如, SELECT COUNT(number 200 OR null) FROM vf; COUNT()函数中条件表达式使用

    2024年04月25日
    浏览(34)
  • sql中count()中加条件的用法

    sql函数count()中可以直接加条件 例:select             count(status = \\\'1\\\' or null) as \\\"ok\\\",             count(status = \\\'2\\\' or null) as \\\"warning\\\",             count(status in (\\\'3\\\', \\\'4\\\') or null) as \\\"ng\\\",             count(id) as \\\"sum\\\"         from             test 运行结果:2    

    2024年02月09日
    浏览(39)
  • 第47章 SQL COUNT() 函数教程

    COUNT() 函数return 匹配指定条件的行数。 SQL COUNT(column_name) 语法 COUNT(column_name) 函数return 指定列的值的数目(NULL 不计入): SQL COUNT(*) 语法 COUNT(*) 函数return 表中的记录数: SQL COUNT(DISTINCT column_name) 语法 COUNT(DISTINCT column_name) 函数return 指定列的不同值的数目: **注释:**COUNT(D

    2024年01月16日
    浏览(39)
  • 【Mybatis】Sql返回count()数量的处理

    【Mybatis】Sql返回count(*)数量的处理 如果把SQL写在类中或是注解中,当要取 select count(*) .... 类型SQL的返回值,直接指定函数的返回类型为 int/long 即可; 但对于把sql语句写在XML文件的情况,如果要取 select count(*) .... 的返回值,必须要指明结果类型 resultType=\\\"java.lang.Integer ,否则

    2024年02月12日
    浏览(41)
  • (12)Hive调优——count distinct去重优化

       离线数仓开发过程中经常会对数据去重后聚合统计,count distinct使得map端无法预聚合,容易引发reduce端长尾,以下是count distinct去重调优的几种方式。 原sql 如下: 优化思路:group by两阶段聚合   解决方案一通 过两阶段group by(分组聚合)  对count (distinct) 进行改造调优,需要

    2024年02月22日
    浏览(40)
  • 使用JOIN查询数据重复,怎么办?使用count统计怎么写SQL?

    比如现在有两个表tbl_a和tbl_b,如下: tbl_a id name 1 Bruce 2 Mike 3 Angela tbl_b id a_id :-: :-: 1 1 2 1 3 2 4 3 5 3 6 3 这时候我们如果联查的话,就会出现重复数据: 这样查出来的数据就会像下面这样: id name 1 Bruce 1 Bruce 2 Mike 3 Angela 3 Angela 3 Angela 去重的方法有三种: 一、distinct 二、group

    2024年02月16日
    浏览(53)
  • SQL server 与 MySQL count函数、以及sum、avg 是否包含 为null的值

    sql server 与 mysql count 作用一样。 count 计算指定字段出现的个数, 不是计算 null的值 获取表的条数 count(n) n:常数 count(1),count(0)等 count(*) count(字段) 其中字段为null 不会统计在内。 avg(字段)、sum(字段) 跟count(字段) 一样 不统计字段为null的。

    2024年02月14日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包