我一直在尝试在select中设置执行限制,但是使用MAX_EXECUTION_TIME中断查询,并且不返回结果。我需要下面这样的代码。这就像限制,但要执行时间。我需要查询停止运行,但返回获得的结果。
SELECT * FROM table WHERE name LIKE '%jean%'LIMIT 1 sec.
1秒内10行。
答案 0 :(得分:1)
如果您使用的是PHP,请尝试无缓冲查询并管理PHP中的超时。
https://www.php.net/manual/en/mysqlinfo.concepts.buffering.php
答案 1 :(得分:0)
有两种方法,
1。在SQL中使用 MAX_EXECUTION_TIME 提示,如下所示。
mysql> select /*+ MAX_EXECUTION_TIME(1000) */ count(*) from tab1 a,tab1 b where a.cust_id = 3839203;
ERROR 3024 (HY000): Query execution was interrupted, maximum statement execution time exceeded
在上面的SQL中,表和具有大量数据的表之间都没有连接。因此,这将花费大量时间。但是我已经指定在运行1000毫秒或1秒后停止查询。
SET SESSION MAX_EXECUTION_TIME=1000;
SET SESSION MAX_EXECUTION_TIME= <<some different value or maximum value supported>>;