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 回答