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

COUNTは、レコードをプルしてコードでカウントするよりも高速ですか?

    データが必要であることがわかっている場合は、先に進んでデータをプルし、コードでカウントします。ただし、カウントのみが必要な場合は、実際に行を取得するよりも、データベースからカウントを取得する方がはるかに高速です。また、必要なものだけを引っ張るのが標準的な方法です。

    たとえば、テーブル内のすべての行をカウントしている場合、ほとんどのデータベース実装は行を調べる必要はありません。テーブルは、行数を知っています。クエリのwhereにフィルタがある場合 句を使用すると、インデックスを使用できます。実際の行のデータを確認する必要はなく、インデックスから行をカウントするだけです。

    そして、これはすべて、転送されるデータが少ないことを数えているわけではありません。

    データベースの速度に関する経験則は、先に進んで自分で試してみることです。一般的なルールは必ずしも良い指標ではありません。たとえば、テーブルが10行で列が数列しかない場合は、データベースへの2回のラウンドトリップがクエリのコストを上回るため、必要なときにすべてを取得する可能性があります。



    1. OracleDeveloperVMを使用して学習およびテストするための事前構築されたOracleデータベース

    2. ClusterControlCLIを使用したPostgreSQLおよびTimescaleDBバックアップの復元

    3. OracleStreamsで伝搬を常に有効に保つ

    4. 10進数のデータ型(MySQL / Postgres)を使用するとパフォーマンスが低下しますか?