国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > MySQL > 正文

mysql SELECT FOUND_ROWS()與COUNT(*)用法區(qū)別

2024-07-24 12:38:05
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

在mysql中 FOUND_ROWS()與COUNT(*)都可以統(tǒng)計(jì)記錄,如果都一樣為什么會(huì)有兩個(gè)這樣的函數(shù)呢,下面我來(lái)介紹SELECT FOUND_ROWS()與COUNT(*)用法區(qū)別.

SELECT語(yǔ)句中經(jīng)常可能用LIMIT限制返回行數(shù),有時(shí)候可能想要知道如果沒有LIMIT會(huì)返回多少行,但又不想再執(zhí)行一次相同語(yǔ)句,那么,在SELECT查詢中包含SQL_CALC_FOUND_ROWS選項(xiàng),然后執(zhí)行FOUND_ROWS()就可以了,代碼如下:

  1. mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name 
  2.       -> WHERE id > 100 LIMIT 10; 
  3. mysql> SELECT FOUND_ROWS(); 

COUNT(*) 的稍微不同之處在于,它返回檢索行的數(shù)目,不論其是否包含 NULL值.

SELECT 從一個(gè)表中檢索,而不檢索其它的列,并且沒有 WHERE子句時(shí),COUNT(*)被優(yōu)化到最快的返回速度,例如:

mysql> SELECT COUNT(*) FROM tablename;

這個(gè)優(yōu)化僅適用于 MyISAM表, 原因是這些表類型會(huì)儲(chǔ)存一個(gè)函數(shù)返回記錄的精確數(shù)量,而且非常容易訪問。對(duì)于事務(wù)型的存儲(chǔ)引擎(InnoDB, BDB), 存儲(chǔ)一個(gè)精確行數(shù)的問題比較多,原因是可能會(huì)發(fā)生多重事物處理, 而每個(gè)都可能會(huì)對(duì)行數(shù)產(chǎn)生影響。

COUNT(DISTINCT expr,[expr...]),返回不同的非NULL值數(shù)目。

若找不到匹配的項(xiàng),則COUNT(DISTINCT)返回 0.

PHP代碼如下:

  1. <?php 
  2.     $sql = "select count(*) from t"
  3.     $res = mysql_query($sql); 
  4.     $num = mysql_result($res,0); 
  5.     $sql =  "select topic,detail from t limit 5"
  6.     //***以下我就不寫了 
  7. ?> 

然而用mysql自帶函數(shù)found_rows();也可以快速求出總數(shù),PHP代碼如下:

  1. <?php 
  2.     $sql =  "select sql_calc_found_rows topic,detail from t limit 5"
  3.     $sql =  "select found_rows()"//Vevb.com 
  4.     $num = mysql_result($res,0); 
  5. ?> 

這種方法使用時(shí)所要注意的問題.

引用:

1 必須以select sql_calc_found_rows 開頭

2 這時(shí)found_rows() 為 沒有l(wèi)imite 時(shí)的行數(shù)

以下為一個(gè)演示,希望大家看了更加明白,PHP代碼如下:

  1. mysql> select count(*) from zd_sort2; 
  2. +----------+ 
  3. count(*) | 
  4. +----------+ 
  5. |       20 | 
  6. +----------+ 
  7. 1 row in set (0.14 sec) 
  8.  
  9. mysql> select sql_calc_found_rows st2_id  from zd_sort2 limit 3; 
  10. +--------+ 
  11. | st2_id | 
  12. +--------+ 
  13. |      1 |    
  14. |      6 |       
  15. |     12 |         
  16. +--------+ 
  17. rows in set (0.00 sec) 
  18.  
  19. mysql> select found_rows(); 
  20. +--------------+ 
  21. | found_rows() | 
  22. +--------------+ 
  23. |           20 | 
  24. +--------------+ 
  25. 1 row in set (0.00 sec) 
  26.  
  27. mysql> 

這兩中方法效率如何呢.

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 凤城市| 上高县| 扶沟县| 阿克陶县| 陕西省| 大洼县| 旬阳县| 台前县| 伽师县| 汝南县| 普定县| 霍邱县| 武宁县| 平远县| 新泰市| 盱眙县| 河间市| 都兰县| 长沙市| 深州市| 九寨沟县| 旌德县| 东乌珠穆沁旗| 五常市| 华蓥市| 迁安市| 德州市| 汶川县| 新民市| 开原市| 孟连| 朔州市| 东辽县| 五家渠市| 德清县| 杭锦后旗| 汝城县| 大兴区| 芜湖市| 株洲市| 潜江市|