[英]MySQL queries in PHP
兩個快速的(我希望!)問題:
計算行
在SQL查詢中使用COUNT(id)
還是只選擇所有行並在返回的資源上使用PHP的mysql_num_rows()
函數更有效? 這是否取決於結果查詢的大小? 有沒有確定該問題答案的簡便方法?
結果數組
目前,我在查詢中使用COUNT(id)
,然后顯然使用mysql_query()
和mysql_fetch_array()
,如下所示:
$sql = "SELECT COUNT(id) FROM TABLE1;";
$resource = mysql_query($sql) or die(mysql_error())
$result = mysql_fetch_array($resource);
$count = $result[0];
這將返回正確的行數。 但是,我很驚訝
$count = mysql_fetch_array($resource)[0];
不起作用; 我得到錯誤:
Parse error: syntax error, unexpected '[' in C:\ServerDocs\file1.php on line 44
關於發生了什么有一個簡單的解釋嗎?
提前致謝,
克里斯
1)mysql_query獲取所有結果,然后對結果進行計數。 因此,性能與結果數量有關。 如果執行count(*),則它是一個數據庫選擇,僅產生一個行/列。 在這種情況下,數據庫可以為您做所有事情,通常認為這更好。
2) $count = mysql_fetch_array($count)[0];
不可能。 請執行下列操作:
$count = mysql_fetch_array($count);
echo $count[0];
這取決於情況,但是SELECT COUNT(*)
通常更快。 原因很簡單,就是使用mysql_num_rows()
,數據庫服務器必須實際構建結果集。 另一方面,使用COUNT(*)
,DB可能僅從索引就可以確定行數,這要快得多。 因此,如果只想計數,那么mysql_num_rows()
最終會為相同的結果做更多的工作。
另一個缺點是mysql_num_rows不適用於無緩沖查詢。 因此,如果您需要處理非常大的結果集,則可能不建議使用mysql_num_rows。 但是, COUNT(*)
始終可用。
$count = mysql_fetch_array($resource)[0];
在當前版本的php中無法使用這種類型的語句。 所以,更好的使用
$no_of_rows = mysql_fetch_array($count); echo $no_of_rows[0];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.