大きなテーブル (約 1 億 5000 万行) があり、単純な select count(*) を実行しようとすると、mysql は約 1 時間動作し、その後エラーをスローします。
これはmysqlの制限によるものではなく、むしろ私の側の問題によるものだと思いますが、どこから調べればよいのかわかりません。何か案は?
テーブルはLinux上のinnodb mysql 5.5です
大きなテーブル (約 1 億 5000 万行) があり、単純な select count(*) を実行しようとすると、mysql は約 1 時間動作し、その後エラーをスローします。
これはmysqlの制限によるものではなく、むしろ私の側の問題によるものだと思いますが、どこから調べればよいのかわかりません。何か案は?
テーブルはLinux上のinnodb mysql 5.5です
このようなテーブルステータスで確認できます
SHOW TABLE STATUS FROM db_name LIKE 'table_name';
行の列が表示されます....
使用できますcount(1) instead of count(*)
試す ::
Select count(1) from my_table
このようなクエリを高速化する最も簡単な方法は、カバリング インデックスを使用することです。これにより、必要な行をスキャンできますが、行ごとに必要な I/O のバイト数が少なくなります (行全体ではなく、各行のデータの一部のみをスキャンしているため)。さらに、インデックスがクエリと同じ方法でソートされている場合、ソートのコストを回避し、スキャンする行を大幅に減らすことができます。