MYSQL中统计查询结果总行数的便捷方法【转载】
转自:http://ginew.blog.163.com/
今天阅读 wordpress代码时,发现一个MYSQL的关键词 SQL_CALC_FOUND_ROWS 查看手册后发现此关键词的作用是在查询时统计满足过滤条件后的结果的总数(不受 Limit 的限制)
例如: SELECT SQL_CALC_FOUND_ROWS tid from cdb_threads WHERE fid=14 LIMIT 1,10;
假设满足条件的有1000条,这里返回10条。立即使用 SELECT found_rows() AS rowcount; 则返回的 rowcount 为1000;
这样节省了SELECT count(*) AS rowcount的重复查询,可以节省比较可观的时间
===============================
以下是该放在在游味中的应用:
function mail_list_sent($uid, $start)
{
// 注意SQL_CALC_FOUND_ROWS uid之间没有逗号
$query = "SELECT SQL_CALC_FOUND_ROWS uid, real_name, current_city, msg_uid, sender_flag, msg_title, msg_content from ".TT_DBTABLEPRE."mailbox as mb1, ".TT_DBTABLEPRE."user as usr1 WHERE mb1.sender_id=usr1.uid AND mb1.sender_id=$uid AND sender_flag > 0 LIMIT $start, ".TT_PAGESIZE;
$mails = $this->db->fetch_all($query);
//查询SELECT中满足条件的行数,与LIMIT子句无关
$max_count = $this->db->fetch_first("SELECT found_rows() AS rowcount");
$tmp['state_code'] = 200;
$tmp['info'] = "OK";
$tmp['list'] = $mails;
$data = json_encode($tmp);
return $data;
}
感谢作者分享!
相关文档:
1、打开MyEclipse6.6
2、选择菜单:Window/Open Perspective/MyEclipse Database Explorer,点击OK,在左边打开DB Brower窗口。
3、在DB Brower窗口内任意空白处击右键,选择New命令,弹出Database Driver窗口
4、本窗口各项说明:
Driver template: MySQL Connector/J 选择驱动模板
& ......
1、选取最适用的字段属性
MySQL 可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。例如,在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间,甚至使用V ......
一直以来我的文章都是以工作笔记的形式存在。这对于自己读起来没什么大碍,但是对于其他读者可能就有些迷茫。我尽量改改,换种方式。
1. MySQL 的版本
如果要支持分区表,则应该使用 5.1.x 以上的版本。如
mysql> show variables like '%version%';
+-------------------------+------------------------------ ......
由于前段时间要用powerdesigner设计数据库,可数据库设计好后好导入MysQL时需要ODBC连接,而MysQL5.0以上的均要修改密码(我在网上查过),按他们的意思修改了root密码,结果是直接进不了MysQL了,我那个郁闷,在网上查找资料,也按他们的方法做了,可还是不行(本人对dos不熟)。但最终还是可以了,下面说下具体方法
1、w ......
在FC8中默认安装的有mysql,没有的话可以很方便的安装下。
默认的mysql的include文件目录在/usr/include/mysql
默认的mysql的lib文件夹在/usr/lib/mysql
这两个目录在我们编译时候需要到。
我的测试用的C代码为:
#include <stdio.h>
#include <stdlib.h>
#include <mysql.h>
#define CONN_HOST ......