问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

mysql innodb select count 优化解决方案

发布网友 发布时间:2022-04-26 08:39

我来回答

3个回答

懂视网 时间:2022-04-07 21:21

 

 例如:需要取出一张表的前10行,同时又需要取出符合条件的总数。这在某些翻页操作中很常见

mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name WHERE id > 100 LIMIT 10;
mysql> SELECT FOUND_ROWS()

 

 表示的是:

在上一查询之后,你只需要用FOUND_ROWS()就能获得查询总数,这个数目是抛掉了LIMIT之后的结果数

 其中第一个sql里面的SQL_CALC_FOUND_ROWS不可省略,它表示需要取得结果数,也是后面使用FOUND_ROWS()函数的铺垫。

第二个SELECT将返回第一条SELECT如果没有LIMIT时返回的行数,
如果在前一条语句中没有使用SQL_CALC_FOUND_ROWS选项,FOUND_ROWS()将返回前一条语句实际返回的行数。

FOUND_ROWS()得到的数字是临时的,执行下一条语句就会失效。如果想要这个数字,就要将它保存下来

 mysql> SELECT SQL_CALC_FOUND_ROWS * FROM ... ;
 mysql> SET @rows = FOUND_ROWS();

 

 如果使用 SELECT SQL_CALC_FOUND_ROWS,MySQL必须计算所有结果集的行数。尽管这样,
总比再执行一次不使用LIMIT的查询要快多了吧,因为那样结果集要返回客户端的

 

mysql-函数FOUND_ROWS()

标签:

热心网友 时间:2022-04-07 18:29

我们知道,MySQL 一直依赖对 count(*) 的执行很头疼。很早的时候,MyISAM 引擎自带计数器,可以秒回;不过 InnoDB 就需要实时计算,所以很头疼。以前有多方法可以变相解决此类问题,比如:
1. 模拟 MyISAM 的计数器比如表 ytt1,要获得总数,我们建立两个触发器分别对 insert/delete 来做记录到表 ytt1_count,这样只需要查询表 ytt1_count 就能拿到总数。ytt1_count 这张表足够小,可以长期固化到内存里。不过缺点就是有多余的触发器针对 ytt1 的每行操作,写性能降低。这里需要权衡。


2. 用 MySQL 自带的 sql_calc_found_rows 特性来隐式计算

依然是表 ytt1,不过每次查询的时候用 sql_calc_found_rows 和 found_rows() 来获取总数,比如:

热心网友 时间:2022-04-07 19:47

select count(*)
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
强奸罪判多少年可以缓刑吗 20句充满着正能量的最励志的英语名言 如何通过cet-4? 去赤道几内亚,需要带什么行李,生活用品,在那边大概生活一年,什么东西... 去赤道几内亚需要准备什么?主要要预防什么疾病?要准备什么预防药品... 可惜!大部分消费者在交易后会取消亚马逊Prime会员资格 想问下 cpu i7 4900mq. gtx765m显卡. 32G内存 能大部分游戏效果开高么... i7 4800MQ i7 4900MQ 能有多大差别? 外星人14,显卡GTX765M。玩... 三星k2200打印机怎么升级 三星k2200打印机怎么升级br? 三星k2200打印机如何双面打? 考驾照一般什么步骤 去驾校学车的主要流程? 学开车考驾照步骤 新手学车步骤 驾校学车流程? 学车的步骤是怎样?开车基础从哪学里? 新手学车第一次上路的步骤 驾校学习的步骤? 学车有几个步骤? 新手学车的具体操作步骤 驾校学车怎么起步 在驾校学习开车的步骤(新手,第一次练车,具体到每个细节)? 请问华为手机C8818 如何截屏? 华为nova 8怎么截图 华为手机nova8怎么截图 WORD中怎么输出稿纸模式 这个是钢筋符号吗?Word里如何输出? 请问怎样在word中输出上面带有一横杠的大写字母? 华为手机c628怎么截图全屏 在word里怎样输出一些特殊的符号? mysql5.6 innodb 优化 哪些 Mysql Innodb存储引擎 select count 太慢,怎么优化 mysql innodb select count 查询速度慢,该怎么优化,已加二级索引,还是... 求问mysql 的innodb 写入频繁怎么优化 anwsion的数据库表类型InnoDB和MyISAM有何差别?选哪个更好 数据库性能优化 如何创建innodb数据库 mysql建立数据库表的时候TYPE=InnoDB有什么作用 mysql优化一般需要做哪些?其他数据库优化也行(sql) mysql使用innodb做缓存,感觉没有什么效果,CPU一直都好高,是不是设置... centos下mysql如何了解哪些地方需要优化,怎么优化达到最好的效果 关于珍惜时间的名言或谚语? 关于珍惜时间的 俗语、古诗、名言 (各十句) 有关珍惜时间的格言或谚语 关于珍惜时间的格言和谚语 关于珍惜时间的名言、谚语。 关于珍惜时间的名言和谚语 写两条关于珍惜时间的名言或谚语 关于珍惜时间的谚语和成语 怎么修改在天猫中已绑定的支付宝?