mysql查询变得更慢,因为它走得更远?

时间:2012-08-03 14:47:28

标签: .net mysql performance

这是我的查询。根据日志,查询结果大约需要一秒钟。之后的许多循环(偏移17100)需要15 +秒。为什么?在create table中定义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)

2 个答案:

答案 0 :(得分:4)

当你没有WHERE条件时,引擎最有可能进行全表扫描,这解释了更长的延迟和更高的偏移。

当你没有where条件时,基本上你就像高度分散的文本文件那样阅读表格。

答案 1 :(得分:2)

您还可以尝试使用EXPLAIN命令查看每个SELECT扫描的行数。与前一个答案一样,WHERE可以帮助您仅选择高于初始限制参数的id。