栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

regexp_replace的性能与在Oracle中翻译的性能有关?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

regexp_replace的性能与在Oracle中翻译的性能有关?

我认为您正在进行简单的优化。regexp表达式的计算是如此昂贵,以至于结果被缓存起来,希望将来可以再次使用。如果您实际使用不同的字符串进行转换,您会发现适度的翻译自然是更快的,因为它是其专门功能。

这是我的示例,在上运行

11.1.0.7.0

SQL> DECLARE  2     TYPE t IS TABLE OF VARCHAr2(4000);  3     l       t;  4     l_level NUMBER := 1000;  5     l_time  TIMESTAMP;  6     l_char  VARCHAr2(4000);  7  BEGIN  8     -- init  9     EXECUTE IMMEDIATE 'ALTER SESSION SET PLSQL_OPTIMIZE_LEVEL=2'; 10     SELECt dbms_random.STRING('p', 2000) 11       BULK COLLECT 12       INTO l FROM dual 13     ConNECT BY LEVEL <= l_level; 14     -- regex 15     l_time := systimestamp; 16     FOR i IN 1 .. l.count LOOP 17        l_char := regexp_replace(l(i), '[]()[]', '-', 1, 0); 18     END LOOP; 19     dbms_output.put_line('regex     :' || (systimestamp - l_time)); 20     -- tranlate 21     l_time := systimestamp; 22     FOR i IN 1 .. l.count LOOP 23        l_char := translate(l(i), '()[]', '----'); 24     END LOOP; 25     dbms_output.put_line('translate :' || (systimestamp - l_time)); 26  END; 27  /regex     :+000000000 00:00:00.979305000translate :+000000000 00:00:00.238773000PL/SQL procedure successfully completed

11.2.0.3.0

regex     :+000000000 00:00:00.617290000translate :+000000000 00:00:00.138205000

结论:总的来说,我怀疑

translate
会赢。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/635014.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号