大きな表の行の総数を最も効率的に数える方法は何ですか?私、23万行を持つテーブルがあると次のクエリでは、生産、ハードウェア上の30秒以上かかる:MySQL:大規模なテーブルの行数を効率的に数える方法は?
select count(*) from tablename;
MySQLがテーブルスキャンをやってしなければならないようだが、必要である必要があり、このように見えるしていません。
大きな表の行の総数を最も効率的に数える方法は何ですか?私、23万行を持つテーブルがあると次のクエリでは、生産、ハードウェア上の30秒以上かかる:MySQL:大規模なテーブルの行数を効率的に数える方法は?
select count(*) from tablename;
MySQLがテーブルスキャンをやってしなければならないようだが、必要である必要があり、このように見えるしていません。
InnoDBではテーブルのローカウントが遅いです。
一方、MyISAMはテーブルのプロパティとして行数を持っているため、MyISAMでクエリが本当に速くなります。
+1 MyISAMの場合、InnoDBはそれをカットしません:P –
これはInnoDBのACID準拠の代償です。 – Mchl
使用キャッシュクエリSELECT SQL_CACHE数(COLUMN_NAME)テーブル
クエリキャッシュはMySQL 5.7.20以降で廃止され、MySQL 8.0では削除されています。 – DidThis
から主キーを持っていますか?テーブルにはどのようなインデックスがありますか? –
@Jacob、それは本当に重要ですか? InnoDbは存在する場合、23mi PKまたはインデックスを数えなければなりません。 – Tocco
インデックススキャンを実行している可能性がありますが、まだ遅いです。 –