Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net mysql查询越走越慢?_.net_Mysql_Performance - Fatal编程技术网

.net mysql查询越走越慢?

.net mysql查询越走越慢?,.net,mysql,performance,.net,Mysql,Performance,这是我的问题。根据日志,查询结果大约需要一秒钟。许多回路后来偏移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

这是我的问题。根据日志,查询结果大约需要一秒钟。许多回路后来偏移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)

当您没有WHERE条件时,引擎最有可能执行全表扫描,这解释了延迟越长,偏移量越大的原因


当您没有where条件时,基本上您是像读取高度碎片化的文本文件一样读取表格。

当您没有where条件时,引擎最有可能执行完整表格扫描,这解释了延迟越长,偏移量越大的原因


当您没有where条件时,基本上您是像读取高度碎片化的文本文件一样读取表。

您也可以尝试使用EXPLAIN命令查看每次选择扫描多少行。与前面的回答一样,WHERE可以帮助您仅选择初始限制参数上方的id。

您还可以尝试使用EXPLAIN命令查看每次选择扫描多少行。与前面的答案一样,WHERE可以帮助您仅选择初始限制参数上方的id。

是否应通过限制并使用id作为索引进行优化?在大多数情况下不会。如果ID值是连续的,可以使用where条件强制执行。例如,从表1中选择*,其中ID>1000 order by ID desc Limit 100这是真正的fck,当我限制它时,它会查看这么多行。它不应该通过Limit进行优化并使用ID作为索引吗?大多数情况下不会。如果ID值是连续的,可以使用where条件强制执行。例如,从表1中选择*,其中ID>1000按ID描述订单限制100这确实是伪造的,当我限制时,它会看到这么多行,这确实告诉我。在一个示例中,行数大于300,但其数量没有限制中的多。这是一种混乱,它会看到这么多罗西特告诉我。在一个示例中,行数大于300,但其数量没有限制中的多。这有点混乱,它会看到这么多行