问题描述
嗨,汤姆
想了解如何在实例中分配内存以及在何处计算oracle中的解码、regexp函数?如果我们从表中读取数据并将其写入任何其他位置(而不是oracle ) ,那么在where子句中使用regexp函数来启动查询时,或者在不使用regexp过滤器的情况下从oracle中取出数据并在其他位置应用regexp ,该方法会更好
E。G。
从表1中选择列1,列2 ,其中regexp_ like(col1,'【^a-zA-Z0-9】') ,日期介于to_date('08/02/2021 00.00.00')和to_date('08/02 /2021 06.00.00')
或
从表1中选择coil1,col2 ,其中date_col介于to_date ('08/02/2021 00.00.00')和to_date ('08/02/2021 06.00.00')之间
想了解如何在实例中分配内存以及在何处计算oracle中的解码、regexp函数?如果我们从表中读取数据并将其写入任何其他位置(而不是oracle ) ,那么在where子句中使用regexp函数来启动查询时,或者在不使用regexp过滤器的情况下从oracle中取出数据并在其他位置应用regexp ,该方法会更好
E。G。
从表1中选择列1,列2 ,其中regexp_ like(col1,'【^a-zA-Z0-9】') ,日期介于to_date('08/02/2021 00.00.00')和to_date('08/02 /2021 06.00.00')
或
从表1中选择coil1,col2 ,其中date_col介于to_date ('08/02/2021 00.00.00')和to_date ('08/02/2021 06.00.00')之间
专家解答
归根结底, Oracle只是一个大型C/C++程序,就像其他程序一样。因此,在数据库服务器上运行正则表达式的成本与在任何其他服务器上运行正则表达式的成本几乎相同。
最明显的区别可能是数据移动的成本。让我们来探讨几个关于您的查询的示例
实施例1
=======
a) Select +正则表达式+ =>之间返回1000行发送到目标的数据
b) =>之间的Select +将1100行数据返回到目标,在目标位置,应用服务器使用正则表达式过滤掉您不应该拥有的100行。
(a)和(b)之间的费用差额接近零。
实施例2
=======
a) Select +正则表达式+ =>之间返回1000行数据
b)在=>之间选择+返回100,000行数据
(a)和(b)之间的费用差别现在很大。运送99,00行的cpu/网络成本可能高于运行整个查询的成本。人们常常忘记,通过网络发送信息只需要CPU。
通常-您总是希望尽可能靠近存储数据的位置来处理数据。
最明显的区别可能是数据移动的成本。让我们来探讨几个关于您的查询的示例
实施例1
=======
a) Select +正则表达式+ =>之间返回1000行发送到目标的数据
b) =>之间的Select +将1100行数据返回到目标,在目标位置,应用服务器使用正则表达式过滤掉您不应该拥有的100行。
(a)和(b)之间的费用差额接近零。
实施例2
=======
a) Select +正则表达式+ =>之间返回1000行数据
b)在=>之间选择+返回100,000行数据
(a)和(b)之间的费用差别现在很大。运送99,00行的cpu/网络成本可能高于运行整个查询的成本。人们常常忘记,通过网络发送信息只需要CPU。
通常-您总是希望尽可能靠近存储数据的位置来处理数据。
文章转载自askTom,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




