MySQL - 将限制增加1会导致执行时间从不到一秒增加到无限

时间:2015-01-21 16:44:23

标签: mysql infinite

使用简单的查询,如:

select * from <table> limit 5;

将在几分之一秒内返回结果,这是预期的。我可以将限制增加到49,结果仍然会在几分之一秒内返回。但是,将限制增加到50将导致无限的执行时间。

只选择一列允许我将限制增加到几千,但当我将查询限制在5000左右时,同样的问题也适用。

我正在使用一个包含大约100列和2200万行的数据库。

为什么我会看到这种行为?

编辑:

使用“order by”:

select * from <table> order by id limit 5; 57秒

select * from <table> order by id limit 50; 57秒

select * from <table> order by id limit 100;没有完成

1 个答案:

答案 0 :(得分:0)

这可能会有所帮助: https://dev.mysql.com/doc/refman/5.0/en/select.html

尝试使用SQL_BIG_RESULTSQL_BUFFER_RESULT

这也可能是由于内存分配设置不佳造成的。 你在存储BLOB或任何其他大型领域吗?