2

大きなテーブル (約 1 億 5000 万行) があり、単純な select count(*) を実行しようとすると、mysql は約 1 時間動作し、その後エラーをスローします。

これはmysqlの制限によるものではなく、むしろ私の側の問題によるものだと思いますが、どこから調べればよいのかわかりません。何か案は?

テーブルはLinux上のinnodb mysql 5.5です

4

4 に答える 4

2

このようなテーブルステータスで確認できます

  SHOW TABLE STATUS FROM db_name LIKE 'table_name';

行の列が表示されます....

于 2012-12-04T14:12:08.713 に答える
1

使用できますcount(1) instead of count(*)

試す ::

Select count(1) from my_table
于 2012-12-04T14:15:49.983 に答える
0

このようなクエリを高速化する最も簡単な方法は、カバリング インデックスを使用することです。これにより、必要な行をスキャンできますが、行ごとに必要な I/O のバイト数が少なくなります (行全体ではなく、各行のデータの一部のみをスキャンしているため)。さらに、インデックスがクエリと同じ方法でソートされている場合、ソートのコストを回避し、スキャンする行を大幅に減らすことができます。

于 2012-12-04T14:34:29.640 に答える