pdo里獲取結果行數的最快方式


使用pdo方式操作數據庫已經有一年多了,以前一直是用的sqlite感覺有好多東西sqlite都不支持,比如last_insert_id,返回最后插入的id,mysql可以,sqlite不可以。不過pdo操作數據庫sqlite和mysql是基本一致的(這也是pdo被廣為推廣的原因之一吧)

一直以來比較糾結的就是如何獲取行數的問題。1,以前一直用的是比較笨的方法,每次都是獲取所有結果,用count計算結果數組元素總數;有時候數據量大會遇到內存耗盡的情況;

2,pdo里有個rowCount函數,這個函數返回的是增刪改的影響條數,對查的結果返回的不是很准。

返回受上一個 SQL 語句影響的行數】是手冊里關於rowCount函數的解釋

對於大多數數據庫, PDOStatement::rowCount() 不能返回受一條 SELECT 語句影響的行數。替代的方法是,使用 PDO::query() 來發出一條和原打算中的SELECT語句有相同條件表達式的 SELECT COUNT(*) 語句,然后用 PDOStatement::fetchColumn() 來取得返回的行數。這樣應用程序才能正確執行。

關於select count(*)和select count(id)的執行效率,在網上查了一下,最后得出了select count(*) 快的結論

后來果斷就換成了select count(*)獲取總條數的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM