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