MYSQL中統(tǒng)計(jì)查詢(xún)結(jié)果總行數(shù)的便捷方法省去count(*)
更新時(shí)間:2013年07月29日 18:11:51 作者:
查看手冊(cè)后發(fā)現(xiàn)SQL_CALC_FOUND_ROWS關(guān)鍵詞的作用是在查詢(xún)時(shí)統(tǒng)計(jì)滿(mǎn)足過(guò)濾條件后的結(jié)果的總數(shù)(不受 Limit 的限制)具體使用如下,感興趣的朋友可以學(xué)習(xí)下
MYSQL的關(guān)鍵詞 :
SQL_CALC_FOUND_ROWS
查看手冊(cè)后發(fā)現(xiàn)此關(guān)鍵詞的作用是在查詢(xún)時(shí)統(tǒng)計(jì)滿(mǎn)足過(guò)濾條件后的結(jié)果的總數(shù)(不受 Limit 的限制)
例如:
SELECT SQL_CALC_FOUND_ROWS tid FROM cdb_threads WHERE fid=14 LIMIT 1,10;
假設(shè)滿(mǎn)足條件的有1000條,這里返回10條。
立即使用
SELECT found_rows() AS rowcount;
則返回的 rowcount 為1000;
這樣節(jié)省了SELECT count(*) AS rowcount的重復(fù)查詢(xún),可以節(jié)省比較可觀的時(shí)間。
以下是該放在在游味中的應(yīng)用:
function mail_list_sent( $uid, $start ) {
// 注意SQL_CALC_FOUND_ROWS uid之間沒(méi)有逗號(hào)
$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 );
//查詢(xún)SELECT中滿(mǎn)足條件的行數(shù),與LIMIT子句無(wú)關(guān)
$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;
}
SQL_CALC_FOUND_ROWS
查看手冊(cè)后發(fā)現(xiàn)此關(guān)鍵詞的作用是在查詢(xún)時(shí)統(tǒng)計(jì)滿(mǎn)足過(guò)濾條件后的結(jié)果的總數(shù)(不受 Limit 的限制)
例如:
復(fù)制代碼 代碼如下:
SELECT SQL_CALC_FOUND_ROWS tid FROM cdb_threads WHERE fid=14 LIMIT 1,10;
假設(shè)滿(mǎn)足條件的有1000條,這里返回10條。
立即使用
復(fù)制代碼 代碼如下:
SELECT found_rows() AS rowcount;
則返回的 rowcount 為1000;
這樣節(jié)省了SELECT count(*) AS rowcount的重復(fù)查詢(xún),可以節(jié)省比較可觀的時(shí)間。
以下是該放在在游味中的應(yīng)用:
復(fù)制代碼 代碼如下:
function mail_list_sent( $uid, $start ) {
// 注意SQL_CALC_FOUND_ROWS uid之間沒(méi)有逗號(hào)
$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 );
//查詢(xún)SELECT中滿(mǎn)足條件的行數(shù),與LIMIT子句無(wú)關(guān)
$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;
}
相關(guān)文章
Mysql中的超時(shí)時(shí)間設(shè)置方式
這篇文章主要介紹了Mysql中的超時(shí)時(shí)間設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
MySQL數(shù)據(jù)庫(kù)安全設(shè)置與注意事項(xiàng)小結(jié)
現(xiàn)在很多朋友使用mysql數(shù)據(jù)庫(kù),為了安全考慮我們就需要考慮到mysql的安全問(wèn)題,例如需要將mysql以普通用戶(hù)權(quán)限運(yùn)行,就算出問(wèn)題了有了root也不能控制系統(tǒng)2013-08-08
mysql分區(qū)表的增刪改查的實(shí)現(xiàn)示例
增刪查改在數(shù)據(jù)庫(kù)中是很常見(jiàn)的操作,本文主要介紹了mysql分區(qū)表的增刪改查的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-01-01
mysql導(dǎo)出表的字段和相關(guān)屬性的步驟方法
在本篇文章里小編給大家分享了關(guān)于mysql導(dǎo)出表的字段和相關(guān)屬性的步驟方法,有需要的朋友們跟著學(xué)習(xí)下。2019-01-01
mysql提示got timeout reading communication packets的解決方法
今天發(fā)現(xiàn)mysql錯(cuò)誤日志中出現(xiàn)got timeout reading communication packets,一般情況因?yàn)椴糠猪?yè)面生成有問(wèn)題導(dǎo)致,這里簡(jiǎn)單分享一下解決方法2019-05-05
MySQL數(shù)據(jù)文件存儲(chǔ)位置的查看方法
這篇文章主要為大家詳細(xì)介紹了MySQL數(shù)據(jù)文件存儲(chǔ)位置的查看方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10
MySQL 5.5.x my.cnf參數(shù)配置優(yōu)化詳解
今天正好看到一篇有關(guān)my.cnf優(yōu)化的總結(jié),雖然還沒(méi)經(jīng)過(guò)我自己的實(shí)踐檢驗(yàn),但從文章內(nèi)容來(lái)說(shuō)已經(jīng)寫(xiě)的很詳細(xì)了(當(dāng)然,事實(shí)上下面這篇文章很多地方只是翻譯了my.cnf原始配置文件的說(shuō)明,呵呵),所以特地轉(zhuǎn)載收藏一下2015-08-08

