`

SQL_CALC_FOUND_ROWS 的使用问题(笔记)

阅读更多

mysql> select SQL_CALC_FOUND_ROWS * FROM tbl_name -> WHERE id > 100 LIMIT 10; 

mysql> select FOUND_ROWS(); 

 

使用SQL_CALC_FOUND_ROWS能够在查询时为您事先准备好符合where条件的记录数目,然后只要在随后执行一句select FOUND_ROWS(); 

 

就能获得总记录数。

 

这个方法有一个副作用,当使用了SQL_CALC_FOUND_ROWS以后,将不能使用查询缓存、在特殊情况下反而或损失一些性能。

 

例如,一个文章表,所有文章做了主键ID,并做了CREATE_TIME DESC的索引。这样在执行

       SELECT    *    FROM    ARTICLE   ORDER   BY  ID DESC LIMIT 10 或者  CREATE_TIME DESC LIMIT 20 时,数据库引擎可

 

以完全根据索引返回最新文章而不会管你有多少符合的记录,但用了SQL_CALC_FOUND_ROWS后引擎不得不扫描全表以确定全部记录数。

 

    但无论怎样,这个 SQL_CALC_FOUND_ROWS 非常适合where字句异常复杂耗时的情况。在频繁使用查询的应用中,这个方法能够带

 

来1/3的数据库性能提升。

 

Never, never use SQL_CALC_FOUND_ROWS it’s just equally slow then “SELECT COUNT(*) FROM table”, but you have to do 

 

it on every page. The count(*) variant you can cache at last, so you don’t have to do it on every page.

(用SQL_CALC_FOUND_ROWS 每页每次查询都会做Count;用 count(*),则可以自己缓存结果)

 

And there’s even another way to avoid the count on paging. It’s the way Facebook does paging on some places. 

 

Facebook don’t give you the usually list of pages from 1 to n there, were you can click at any page. They just give 

 

you the page before, the current page and the next page, if there’s one. On the application side it’s very easy to 

 

find out if you have a page before the current, when you are on the second page there’s one before (so no surprise 

 

here). But what about the next page if you don’t want to make a count. Easy stuff, let me predict you display 10 

 

items per page, so query 11 items instead of 10 per page. This one extra item will cost you nearly nothing and now 

 

you can count the returned rows in your application. If you have more than ten rows you have a next page and you can 

 

happily throw number eleven away.

(只显示上下页;程序很容易知道有没有上一页;判断下一页,只需要多查询1条,则可以判断有没有下一条记录了。)

分享到:
评论

相关推荐

    mysql SELECT FOUND_ROWS()与COUNT()用法区别1

    需要注意的是,`FOUND_ROWS()`只能在最近一次包含`SQL_CALC_FOUND_ROWS`的查询后立即使用,且不适用于子查询。此外,这两个函数在处理大数据集时可能会有性能影响,因为`SQL_CALC_FOUND_ROWS`会增加查询的处理时间。...

    SPWM波形生成工具spwm_calc_v1.3.2使用说明.pdf

    **SPWM波形生成工具spwm_calc_v1.3.2使用详解** SPWM(Sinusoidal Pulse Width Modulation,正弦脉宽调制)是一种常见的电力电子技术,广泛应用于电机驱动、逆变器和电源转换系统。SPWM工具spwm_calc_v1.3.2由作者...

    CRC_Calc+v0.1

    使用CRC_Calc+v0.1.exe这个工具,用户可以方便地对任意数据进行CRC校验。首先,用户输入待校验的数据,接着选择相应的CRC标准。工具会根据所选标准自动进行计算,生成对应的CRC值。这个值可以用于验证数据在传输或...

    CRC_Calc .rar

    CRC(Cyclic Redundancy Check,循环冗余校验)是一种广泛用于数据传输和存储中的错误检测方法。它通过在数据后面添加一个...通过使用这款工具,用户可以快速验证数据的完整性和一致性,从而避免因数据错误导致的问题。

    spwm_calc.zip

    “电赛SPWMfrom me”可能是一个附加的文档或者资料,是作者或提供者关于SPWM技术的一些个人笔记、教程或者参赛项目,可能包含了更深入的理论解释、使用指南或问题解答。 综上所述,这个压缩包包含的软件和资料可以...

    __IO_CALC_ADDRESS_NATIVE

    讲述了__IO_CALC_ADDRESS_NATIVE的作用,

    PIC_CALC计算工具

    多态信息含量(PIC polymorphism information content):在连锁分析中一个遗传标记多态性可提供的信息量的度量。它是一个亲本为杂合子,另一亲本为不同基因型的概率。现常用来衡量座位多态性高低的程度。

    Hedge_DrawDown_Calc_Hedge_DrawDown_Calc_hedge_MT4EA_Drawdown_

    在金融交易领域,尤其是自动化交易(EA)中,"Hedge_DrawDown_Calc_Hedge_DrawDown_Calc_hedge_MT4EA_Drawdown_" 这个标题指的是一个专门用于计算对冲交易(Hedge Trading)期间最大回撤(Drawdown)的工具。...

    ads_order_calc_tact.sh

    ads_order_calc_tact.sh

    zhu_npp_calc.zip

    《朱文泉博士的ENVI净初级生产力计算模型详解》 ...NPP的估算对于理解生态系统的能量流动、碳循环以及气候变化的影响具有深远意义。...使用者在使用过程中,应尊重知识产权,如有任何版权问题,应及时与开发者联系解决。

    mysql获取group by的总记录行数另类方法

    mysql的SQL_CALC_FOUND_ROWS 使用 获取查询的行数 在很多分页的程序中都这样写: 代码如下 SELECT COUNT(*) from `table` WHERE ……; 查出符合条件的记录总数 代码如下 SELECT * FROM `table` WHERE …… limit M,N;...

    mysql found_row()使用详解

    在实际使用中,如果你遇到`FOUND_ROWS()`总是返回1的情况,这可能是因为你没有正确地在查询中使用`SQL_CALC_FOUND_ROWS`,或者是在不同的会话中调用了`FOUND_ROWS()`。`FOUND_ROWS()`的结果只在当前会话内有效,一旦...

    my_calc.rar_calc

    6. **结果展示**:计算器的结果通常显示在一个文本框中,开发者需要处理输入和输出的格式化问题,比如保留小数位数、科学计数法的转换等。 7. **扩展功能**:除了基本的计算,科学计算器往往还提供一些高级功能,如...

    CRC_Calc v0.1.zip

    CRC(Cyclic Redundancy Check,循环冗余校验)是一种广泛用于数据传输和存储中的错误检测方法。...通过使用这个工具,用户可以快速检查他们的数据是否在传输或存储过程中遭受破坏,从而提高系统的可靠性和稳定性。

    ap121_calc

    有的ANSYS12安装包中的MAGNiTUDE中ap121_calc不能用,笔者上传到此,希望能帮到大家

    CRC_Calc v0.2.exe

    例如,CRC8可能使用如0x07或0xD5这样的8位生成多项式,而CRC16和CRC32会使用更复杂的16位和32位多项式。每个多项式对应着一个独特的错误检测能力。 CRC_Calc v0.2.exe 提供了一个用户友好的界面,使得开发者和测试...

    CRC_Calc+v0.1.rar

    对于C语言开发者来说,理解CRC校验原理并能够使用这样的工具是非常有价值的。他们可以将计算出的CRC值嵌入到程序中,以便在数据传输或存储后验证数据的完整性。此外,熟悉CRC计算还可以帮助他们编写自己的CRC函数,...

    Modbus RTU CRC-16校验码生成器 CRC_Calc v0.3 最新版

    对于程序员和工程师来说,CRC_Calc v0.3 是一个强大的辅助工具,可以快速生成和验证Modbus RTU协议中的CRC-16校验码,从而提高工作效率,降低因通信错误导致的问题。 在实际应用中,CRC_Calc v0.3 可以帮助工程师...

    ap120_calc

    ansys 12.0 的专用注册机,点击Y继续,使用时记得管理员身份运行

    MYSQL中统计查询结果总行数的便捷方法省去count(*)

    函数首先执行了一个包含`SQL_CALC_FOUND_ROWS`的查询来获取用户邮箱中的邮件列表,然后使用`found_rows()`来获取满足条件的邮件总数。这种方式提高了性能,因为如果没使用`SQL_CALC_FOUND_ROWS`,我们需要再执行一次...

Global site tag (gtag.js) - Google Analytics