我有以下查询.由于其中的子查询,这会降低性能.我尝试了很多来添加Join而不是Subquery.但是徒劳无功 任何人都可以告诉我如何使用JOIN重写此查询?
update Table_1
set status = 'Status_2'
where status ='status_1' and (col_1, col_2, col_3, nvl(col_4,0), col_5) in (
select col_1, col_2, col_3, nvl(col_4,0), col_5 from Table_2 where status ='Status_0');
Run Code Online (Sandbox Code Playgroud)
请看SELECT * FROM table(DBMS_XPLAN.Display);下面的内容
Plan hash value: 1290346170
------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------------------------------
| 0 | UPDATE STATEMENT | | 1 | 376 | 456 (3)| 00:00:06 |
| 1 | UPDATE | Table_1 | | …Run Code Online (Sandbox Code Playgroud) 我正在尝试实现简单的日志处理程序,它使用 Python 的标准logging库将事件记录到远程服务器。所以我创建了从logging.Handler调用继承的自定义类,RemoteLogHandler它接受LogRecord并将其发送到远程服务器。处理程序以标准addHandler()方式附加到根记录器。
from urllib import requests
class RemoteLogHandler(logging.Handler):
def emit(self, record):
remote_url = "http://foo.bar.baz"
req = request.Request(remote_url, data=record.msg)
request.urlopen(req, timeout=1)
Run Code Online (Sandbox Code Playgroud)
这按预期工作,但当 remote_url 变得不可访问或开始响应缓慢时,显然会导致调用线程锁定。所以我试图找出使这个调用独立于调用线程的最佳方法。
我考虑过的:
所有这些解决方案对于实现如此简单的任务似乎都过于复杂/不必要。是否有一些更好的方法以更少的开销来使这个处理程序非阻塞?