PHP中SQL_CALC_FOUND_ROWS与FOUND_ROWS()和count()
来源:互联网 发布:便宜又好看的淘宝店 编辑:程序博客网 时间:2024/04/28 12:20
MySQL 4.1中新增了FOUND_ROWS()函数,关于这个函数的说明如下:
For a SELECT with a LIMIT clause, the number of rows that would be returned were there no LIMIT clauseA SELECT statement may include a LIMIT clause to restrict the number of rows the server returns to the client. In some cases, it is desirable to know how many rows the statement would have returned without the LIMIT, but without running the statement again. To obtain this row count, include a SQL_CALC_FOUND_ROWS option in the SELECT statement, and then invoke FOUND_ROWS() afterward:
例如需要取出一张表的前10行,同时又需要取出符合条件的总数。这在某些翻页操作中很常见SELECT SQL_CALC_FOUND_ROWS * FROM your_table_name
WHERE id > 33 LIMIT 10;
在上一查询之后,你只需要用FOUND_ROWS()就能获得查询总数,这个数目是抛掉了LIMIT之后的结果数:
SELECT FOUND_ROWS();
其中第一个sql里面的SQL_CALC_FOUND_ROWS不可省略,它表示需要取得结果数,也是后面使用FOUND_ROWS()函数的铺垫。注意:FOUND_ROWS()返回的结果是临时的。如果程序往后会用到这个数字,必须提前它保存在一个变量中待用。
FOUND_ROWS()与count()的区别:
1、当SQL限制条件太多时, count()的执行效率不是很高,最好使用FOUND_ROWS()2、当SQL查询语句没有where等条件限制时,使用count()函数的执行效率较高。
PHP的模型(Model)层:文件mod_demo.php
<?php!defined('PATH_ADMIN') && exit('Forbidden');class mod_demo{public static function testgetresults($start = 0, $perpage = PAGE_ROWS){if($start > -1 && $perpage >0){$condition = "/* WHERE level = '2' OR level ='1' */ORDER BY user_id ASC";}$sql = "SELECT SQL_CALC_FOUND_ROWS * FROM pm_admin_user $condition";$query = pm_db::query($sql);$arrdata = array();while($rowdata = pm_db::fetch_one($query)){$rowdata['add_time'] = date('Y-m-d',$rowdata['add_time']);$arrdata[] = $rowdata;}$arrout = array();if($arrdata){$arrout['data'] = $arrdata;$arrout['count'] = pm_db::result_first("SELECT FOUND_ROWS() AS rowscount");return $arrout;}else{return null;}}}?>
控制(Controller)层文件pmc_demo.php
class pmc_demo{public $_GP;function __construct(){$this->_GP = array_merge($_GET,$_POST);pm_tpl::assign('lang',$this->lang());}public function mytestdata(){$start = (isset($_GET['start']))? (int)$_GET['start'] : 0;//$start = (empty($_GET['start'])) ? 0 : (int)$_GET['start'];$datalist = mod_demo::testgetresults($start, PAGE_ROWS);if($datalist){pm_tpl::assign('datalist',$datalist['data']);pm_tpl::assign('page_url',"?c=demo&a=mytestdata");pm_tpl::assign('pages',mod_pager::get_page_number_list($datalist['count'], $start, PAGE_ROWS));}pm_tpl::assign('ur_here','测试页面');pm_tpl::assign('keyword','@XXX.com');pm_tpl::display("demo_mytestdata");}}
视图View层代码略。
- PHP中SQL_CALC_FOUND_ROWS与FOUND_ROWS()和count()
- SQL_CALC_FOUND_ROWS 与 FOUND_ROWS()
- 关于SQL_CALC_FOUND_ROWS和COUNT(*)
- 接触个新东西 mysqli中的FOUND_ROWS() 和 SQL_CALC_FOUND_ROWS
- mysql SELECT FOUND_ROWS()与COUNT(*)用法区别
- php学习之道:mysql SELECT FOUND_ROWS()与COUNT(*)用法区别
- MYSQL:SQL_CALC_FOUND_ROWS 和count(*) 性能比较
- 使用limit查询的同时取得总的记录数:SQL_CALC_FOUND_ROWS和FOUND_ROWS()
- 使用limit查询的同时取得总的记录数:SQL_CALC_FOUND_ROWS和FOUND_ROWS()
- FOUND_ROWS() vs COUNT()
- Mysql --found_rows()与row_count()
- MySQL中 found_rows()和row_count()解释及用法
- FOUND_ROWS
- FOUND_ROWS()
- SQL_CALC_FOUND_ROWS
- PHP中count函数
- php中mysql_num_rows与count(*)的效率对
- mysql中count(1)与count(*)比较
- POJ 1201 Intervals
- 如何解决绘图过程中的闪烁
- 史上最最佳软件开发实践指导
- Excel如何设置偶(奇)数行填充颜色
- C#获取跳转页面的状态码
- PHP中SQL_CALC_FOUND_ROWS与FOUND_ROWS()和count()
- git命令备忘录
- HBase在split和major compact的一些非通常情况下的触发条件
- 修改 oracle xe 默认中文字符集成为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
- C#代码通过dtd验证xml文件格式是否正确
- ※C++随笔※=>☆C++基础☆=>※№ C语言与C++语言之间关系
- Ext布局实例-----cardLayout布局
- VB Silverlight APP
- 包执行中提示错误:The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.