0

我在这里问的另一个问题引发了另一个问题。我有这个查询

SELECT `Qty`, `Invt`, `ClassNr`, `SubPartCode`, `Description`, `DesignCode`, `Measure`, `Remark`, `PartMnem`
FROM (`loodvrij_receptuur` lr)
JOIN `loodvrij_artikel` la ON `la`.`PartCode` = `lr`.`SubPartCode`
WHERE `lr`.`PartCode` =  'M2430A'
ORDER BY `SubPartCode`, `Qty` desc

我遇到的问题是它在 phpmyadmin 中的执行速度比 CodeIgniter 快。我发现它与 phpmyadmin 自动添加有关LIMIT 30

但我想知道的是,查询只产生 27 个结果。如何LIMIT 30使查询更快?我可以理解返回 30 或更多结果的查询可以更快地使用LIMIT 30,但是当您添加时,少于 30 个结果的查询如何变得更快LIMIT 30

4

2 回答 2

1

我认为您假设限制 30 仅在查询结束时起作用。如果我让你查看电话簿中所有姓氏以字母 T 开头并住在纽约的人,你必须拿出 50,000 个名字,然后看看哪些人在纽约。如果我告诉你我只需要 30 个,你就不必拿出 50,000 个名字,你可以看看纽约的人,然后选择前 30 个名字以 T 开头的人。

SQL 查询通常会以最有效的方式解决,因此通过添加 LIMIT 30,引擎盖下的内容将发生变化,从而使您的查询执行得更快。

于 2012-06-07T13:35:03.810 回答
0

问题不是查询返回多少结果,而是查询必须查看多少项。使用 LIMIT 30,您要求的是在获得前 30 个结果后停止运行。

如果你不限制结果,sql 仍然会搜索,直到它到达基数的末尾。所以即使你得到的结果少于 30 个,它也必须更加努力。

我不知道我是否说清楚了,对不起我糟糕的英语。

于 2012-06-07T13:39:42.377 回答