sql >> データベース >  >> RDS >> Mysql

PDO ::rowCount VS COUNT(*)

    最初の質問:

    count COUNT()を使用する 、内部的にサーバー(MySQL)はリクエストを異なる方法で処理します。

    COUNT()を実行する場合 、サーバー(MySQL)は、カウントの結果を格納するためにメモリを割り当てるだけです。

    $row=$SQL->rowCount();を使用する場合 サーバー(Apache / PHP)は、結果セット全体を処理し、それらすべての結果にメモリを割り当て、サーバーをフェッチモードにします。これには、ロックなどのさまざまな詳細が含まれます。

    PDOStatement::rowCount()に注意してください 返される行数ではなく、最後のステートメントの影響を受ける行数を返します。関連するPDOStatementによって実行された最後のSQLステートメントの場合 SELECTでした ステートメントの場合、一部のデータベースは、そのステートメントによって返される行数を返す場合があります。ただし、この動作はすべてのデータベースで保証されているわけではなく、ポータブルアプリケーションでは信頼できません。

    私の分析では、COUNT()を使用する場合 、$row=$SQL->rowCount();を使用すると、プロセスはMySQLとPHPの両方に分割されます。 、処理はPHPの方が多くなります。

    したがって、COUNT() MySQLの方が高速です。

    2番目の質問:

    COUNT(*) COUNT(id)よりも優れています 。

    説明:

    count(*) mysqlの関数は、値の数を見つけるように最適化されています。ワイルドカードを使用すると、すべての行がフェッチされるわけではありません。カウントを見つけるだけです。したがって、count(*)を使用します 可能な限り。

    出典:



    1. Room API-最近挿入されたエンティティの生成されたIDを取得する方法は?

    2. SQLでフィルターシステムを実装する方法は?

    3. Oracle JDBC:無効なユーザー名/パスワード(ora-01017)

    4. Oracle-FASTREFRESHとJOINSを使用してマテリアライズドビューを作成する方法