今天阅读 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.优化你的MySQL查询缓存

在MySQL服务器上进行查询,可以启用高速查询缓存。让数据库引擎在后台悄悄的处理是提高性能的最有效方法之一。当同一个查询被执行多次时,如果结果是从缓存中提取,那是相当快的。

但主要的问题是,它是那么容易被隐藏起来以至于我们大多数程序员会忽略它。在有些处理任务中,我们实际上是可以阻 ......

我在mysql 命令行这个系列里介绍过有条件查询,它用到WHERE子句。但是有时候用WHERE子句无法给我们的查询加入条件,比如在上一节我们学习的GROUP BY(按组归类)子句,如果我们要在按组归类后加入条件,用WHERE就行不通,因为WHERE只可以在按组归类前加入条件。好在mysql提供HAVING子句,它可以帮我们解决这个问题。

如何使� ......

tomcat 安装目录下的conf目录中的context.xml与web.xml文件分别修改如下:

context.xml 新加如下内容:

auth="Container"

type="javax.sql.DataSource"

driverClassName="com.mysql.jdbc.Driver"

url="jdbc:mysql://数据库地址:3306/数据库� ......

一、Apache HTTP Server 安装:

运行Apache .msi 文件,安装程序将要求你填写如下内容:

1. Network Domain键入你的服务器(或者是你即将注册的服务器)的DNS 域名。例如,你的服务器的DNS域名全称是server.mydomain.net,你只需在这里输入mydomain.net。

2. Server Name  就是你的服务器的DNS域名全称,还是上面的� ......

http://www.mysqlperformanceblog.com/2006/11/12/trying-archive-storage-engine/

(1)在相同的条件下,archive的数据大小远小于myisam

(2)在压缩archive数据时,bzip2好于gzip

(3)需要添加archive的方法和压缩的level,以满足不同用户的需求

(4)这个存储引擎适用于日志数据

(5)此引擎不能update,delete,并 ......