MySQL バージョン 8.0.32-0ubuntu0.20.04.2
SELECT の実行を回避するのではなく、SELECT のパフォーマンスを向上させようとしています。
1,500 万行を挿入します。
変更テーブル big_table ENGINE=INNODB;
**innodb_buffer_pool_size=8G (元は 128Mb) に設定します (MySQL を再起動します)**
Where 句を使用せずに MyISAM テーブルで SELECT COUNT(PK) または SELECT COUNT(*) を実行するのは、すべての行をカウントしないため非常に高速であるため、非常に特殊なケースであることがわかります。 InnoDB 上の同じクエリは文字通りすべての行をカウントするため遅くなります。
ただし、インデックス付きフィールドで where 句が機能すると、InnoDB は MyIsam よりも優れたパフォーマンスを発揮するようです。これがユースケースの 99% のようです...
Where 句を使用せずに MyISAM テーブルで SELECT COUNT(PK) または SELECT COUNT(*) を実行するのは、すべての行をカウントしないため非常に高速であるため、非常に特殊なケースであることがわかります。 InnoDB 上の同じクエリは文字通りすべての行をカウントするため遅くなります。
ただし、インデックス付きフィールドで where 句が機能すると、InnoDB は MyIsam よりも優れたパフォーマンスを発揮するようです。これがユースケースの 99% のようです...