1

これが私のクエリです。ログによると、結果のクエリには約 1 秒かかります。その後の多くのループ (オフセット 17100) には 15 秒以上かかります。なんで?作成テーブルで id を次のように定義

`id` INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT,

ここに私のコード/クエリがあります

Console.WriteLine("1 {0} {1}", DateTime.Now, offset);
var res = conn.Query<PageInfo2>("select * from tbl order by id limit @o, 300", new { o = offset });
Console.WriteLine("2 {0} {1}", DateTime.Now, offset);
offset += res.Count();
foreach (var v in res)
4

2 に答える 2

4

WHERE 条件がない場合、エンジンは完全なテーブル スキャンを実行する可能性が高く、オフセットが大きいほど遅延が長くなります。

where 条件がない場合は、基本的に、高度に断片化されたテキスト ファイルのようにテーブルを読み取っています。

于 2012-08-03T14:52:14.430 に答える
2

EXPLAIN コマンドを使用して、各 SELECT でスキャンされる行数を確認することもできます。前の回答と同様に、WHERE は、初期制限パラメーターを超える ID のみを選択するのに役立ちます。

于 2012-08-03T14:59:51.293 に答える