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

MYSQL count(*)またはcount(1)の何が優れていますか?

    これはMySQLの答えです。

    これらはまったく同じように機能します。MyISAMを使用している場合を除き、COUNT(*)の特殊なケースです。 存在します。私はいつもCOUNT(*)を使用します とにかく。

    https://dev.mysql.com/doc /refman/5.6/en/aggregate-functions.html#function_count

    MyISAMの場合 テーブル、COUNT(*) SELECTの場合、非常に迅速に返されるように最適化されています 1つのテーブルから取得し、他の列は取得せず、WHEREはありません 句。例:

    mysql> SELECT COUNT(*) FROM student;
    

    この最適化は、MyISAMにのみ適用されます このストレージエンジンには正確な行数が保存されており、非常に迅速にアクセスできるためです。 COUNT(1) 最初の列がNOT NULLとして定義されている場合にのみ、同じ最適化の対象になります 。

    ###編集あなたの何人かはユーモアの暗い試みを逃したかもしれません。 MySQLがSQLServerとは異なることを行うような日のために、これを重複しない質問として保持することを好みます。それで私は質問を再開するために投票を投げました(明らかに間違った答えで)。

    上記のMyISAM最適化は、

    にも同様に適用されます。
    COUNT(*)
    COUNT(1)
    COUNT(pk-column)
    COUNT(any-non-nullable-column)
    

    したがって、本当の答えは、それらが常にであるということです。 同じです。




    1. MariaDBでのUUID()のしくみ

    2. PostgreSQLテーブル名を単純に使用することはできません(関係は存在しません)

    3. SQL AS:使用法、例、およびそれがどのようにあなたに最も利益をもたらすことができるか

    4. MariaDBで小文字を含む行を見つける4つの方法