84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
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% のようです...