如何在select中设置执行时间限制,但最后返回结果

时间:2019-06-25 14:46:27

标签: mysql

我一直在尝试在select中设置执行限制,但是使用MAX_EXECUTION_TIME中断查询,并且不返回结果。我需要下面这样的代码。这就像限制,但要执行时间。我需要查询停止运行,但返回获得的结果。

SELECT * FROM table WHERE name LIKE '%jean%'LIMIT 1 sec.

1秒内10行。

2 个答案:

答案 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秒后停止查询。

  1. 您可以设置一个会话参数(以毫秒为单位),然后运行此查询。而且,一旦您想重置该值,就可以为其指定不同的值。

运行SQL之前

SET SESSION MAX_EXECUTION_TIME=1000;

发布运行SQL

SET SESSION MAX_EXECUTION_TIME= <<some different value or maximum value supported>>;