2013-03-31 42 views
1

我試圖找出當檢查表中的列名時更快,更少的內存使用情況,即使我們有10萬億行要檢查。我應該使用fetch()還是rowCount()?我們應該PDO提取還是rowcount來檢查數據庫中的一行

+0

找出最好的方法是建立一個測試場景並運行一些基準測試。 – jcbwlkr

+0

兩者都不適用於檢查列名 - 行和列是正交的。但是,如果您的意思是「檢查是否存在一行值」,那麼我會使用'EXISTS' - 它將允許數據庫「儘快停止查找」。 – 2013-03-31 00:36:04

+0

我給了一個-1,因爲這兩種方法都有[**不同(記錄)的語義**](http://php.net/manual/en/pdostatement.rowcount.php)。對於給定的任務,只有一個是正確的,所以這個問題的基礎是不正確的。 – 2013-03-31 00:42:29

回答

1

那麼,對於給定的問題,fetch()是唯一的方法。它會做一行或10萬億次(因爲你顯然會在後一種情況下選擇count(*),對於哪個rowcount()將總是返回1,無論發現了多少行)。

但是,如果你只需要一行,它們是平等的。來自一行的內容不會傷害任何人,無論是在速度還是內存使用方面。

說到用戶認證,我們無疑會需要一些數據,如用戶ID,用戶角色等。因此,fetch()再次是唯一的選擇。

嚴格地說,rowcount()在web開發中的使用非常有限。這種功能的真正需求幾乎不會超過一年中的一兩個案例。

+0

你的意思是即使在那裏發現0行,rowcount返回true? – diti

相關問題