我写了一个 PHP/MySQLi 前端,用户可以在其中输入 SQL 查询,然后服务器将结果返回到一个表中(或在INSERT
s 和UPDATE
s 上打印 OK)
SELECT * FROM movies
由于在包含大约 1.6M 电影、1.9M 演员和 3.2M 关键字的 IMDb 提取中打印结果可能需要很长时间(例如),我通过在 50 次迭代后取消打印 for 循环将输出限制为 50 行。
但是,查询本身也需要相当长的时间,所以我希望可以设置一个全局最大行返回值,不管是否使用LIMIT
关键字。我只是打算将服务器用于我自己的练习,但是由于我班上的一些人正在努力使用老师提供的前端(Windows EXE,但有一半的班级使用 Mac/Linux),我决定让它可以访问他们也是。但是我想防止我的 Debian VM 崩溃,因为 - 好吧,基本上这将是一个 DDoS。
为了澄清(全局限制为 50 的示例):
SELECT * FROM movies;
> First 50 rows
SELECT * FROM movies LIMIT 10;
> First 10 rows
SELECT * FROM movies LIMIT 50,100;
> 50 rows (from 50 to 99)
是否有可能使用 PHP/MySQLi 或 MySQL 服务器本身来限制返回值的数量?还是我必须LIMIT
在查询中附加/替换/替换?