如何处理大结果的查询? (对于搜索栏)

时间:2015-11-29 17:06:53

标签: php mysql

我添加了一个搜索栏,供人们搜索我的数据库中的其他人,但我担心搜索会返回多行。我只是想停止查询,如果它变大,则返回none。

如果结果很大(ex.100s的行),如何停止查询继续?

有没有更好的方法解决这个问题?

2 个答案:

答案 0 :(得分:1)

$sql = "SELECT * FROM Orders LIMIT 30";

答案 1 :(得分:0)

我认为你不能“停止”查询。但如果您真的想先计算行数,可以按照以下步骤进行计算:

假设您的搜索查询如下所示

SELECT *
FROM table_name
WHERE name = 'some name';

您可以先计算结果

SELECT COUNT(*) AS num
FROM table_name
WHERE name = 'some name';

如果 num< = 100

,则只选择行(第一个查询)

要将两个查询合并为一个,您可以使用CROSS JOIN

SELECT *
FROM (
    SELECT COUNT(*) AS num
    FROM table_name
    WHERE name = 'some name'
) num
CROSS JOIN table_name
WHERE num.num <= 100
AND name = 'some name'

如果 num &gt; 100 MySQL将停止,因为没有任何东西可以加入。

可是:

  • 它不是用户友好的 - 您最好使用LIMIT并使用(或实现)分页系统。
  • 无法保证它比使用LIMIT
  • 更快
  • num&lt; = 100
  • 的所有情况下,它会慢一些