1

ダンプと〜1.3Gダンプファイルからインポートされた、〜3Gファイルサイズ(私はinnodb_file_per_table = 1を使用)のinnodbテーブルがあります。ここにいくつのrecodが存在するかわかりません。

「selectcount(id)from $ table」を実行すると、「27117291」(読みやすさについては27,117,291)が表示されます。「$tablelimit100からcount(id)を選択」を実行すると、「27117291」も表示されます。

なぜこのように起こっているのですか?InnoDBは本当に優れたMyISAMですか?!

PS「selectcount(id)from $ table where id=73010460;」を実行した場合 「1」が表示されます。

4

3 に答える 3

5
select count(id) from $table

countを含む1行を返します。したがって、制限によって違いはありません。

参考

+-----------+
| COUNT(id) |
+-----------+
|  <count>  |
+-----------+
于 2012-11-03T23:24:58.553 に答える
4

私はSQLの専門家ではありませんが、count()は1行しか返さないため、100に制限しても何も起こらないと思います。

期待される結果を得るには、次のようなことを行う必要があると思います。select count((select id from x limit 100))

于 2012-11-03T23:25:00.173 に答える
3

limitはそのクエリでは機能しません。countクエリは1行を返し、100行を制限しています。カウントクエリが100行を超える行を返す場合は、効果的です。

そのクエリの制限はカウントを制限せず、行を返すフィルター

于 2012-11-03T23:24:58.973 に答える