[20220104]in list 几种写法性能测试.txt

[20220104]in list 几种写法性能测试.txt

–//以前写过几种in list的写法,从来没有测试过这几种方法的性能测试看看.

1.环境:
SCOTT@book> @ver1
PORT_STRING VERSION BANNER
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS

–//3.正则表达式例子:

SELECT *
FROM dept
WHERE deptno IN
( SELECT TO_NUMBER (REGEXP_SUBSTR ( ‘10,20’ ,'[^,]+’ ,1 ,LEVEL)) FROM DUAL CONNECT BY REGEXP_SUBSTR ( ‘10,20’ ,'[^,]+’ ,1 ,LEVEL) IS NOT NULL);

3.测试脚本:

$ seq -f “%-1.0f” 1e9 90000011 1e10|wc
100 100 1100

$ seq -f “%-1.0f” 1e9 90000011 1e10 | paste -sd’,’ >|aa.txt

$ cat m16.txt
set verify off
set linesize 32767
variable vmethod varchar2(20);
exec :vmethod := ‘&&2’;
insert into job_times values ( sys_context (‘userenv’, ‘sid’) ,dbms_utility.get_time ,:vmethod) ;
commit ;

declare
v_string varchar2(4000);
l_count PLS_INTEGER;
begin
v_string := ‘1000000000,1090000011,…,9910001089’;
for i in 1 .. &&1 loop
select count() into l_count from (select * from table (cast(str2numlist(v_string) as numtabletype)));
— select count(
) into l_count from (select (column_value).getnumberval() from xmltable(v_string));
— select count(*) into l_count from (select to_number (regexp_substr ( v_string ,'[^,]+’ ,1 ,level)) from dual connect by regexp_substr ( v_string ,'[^,]+’ ,1 ,level) is not null);
— DBMS_OUTPUT.PUT_LINE (l_count);
end loop;
end ;
/
update job_times set time_ela = dbms_utility.get_time – time_ela where sid=sys_context (‘userenv’, ‘sid’) and method=:vmethod;
commit;
set linesize 270
quit

–//v_string 的值从前面的aa.txt复制过来,我截断了。

4.测试:
–//在测试开始前我猜测使用正则表达式最慢,使用函数应该最快。

$ zzdate ;sqlplus -s -l scott/book @m16.txt 1e6 str2numlist >/dev/null;zzdate
trunc(sysdate)+16/24+33/1440+03/86400 == 2022/01/04 16:33:03 == timestamp’2022-01-04 16:33:03′
trunc(sysdate)+16/24+40/1440+16/86400 == 2022/01/04 16:40:16 == timestamp’2022-01-04 16:40:16′

$ zzdate ;sqlplus -s -l scott/book @m16.txt 1e6 xmltable >/dev/null;zzdate
trunc(sysdate)+16/24+41/1440+00/86400 == 2022/01/04 16:41:00 == timestamp’2022-01-04 16:41:00′
trunc(sysdate)+17/24+12/1440+47/86400 == 2022/01/04 17:12:47 == timestamp’2022-01-04 17:12:47′

$ zzdate ;sqlplus -s -l scott/book @m16.txt 1e6 regexp_substr>/dev/null;zzdate
trunc(sysdate)+17/24+18/1440+50/86400 == 2022/01/04 17:18:50 == timestamp’2022-01-04 17:18:50′
trunc(sysdate)+00/24+43/1440+43/86400 == 2022/01/05 00:43:43 == timestamp’2022-01-05 00:43:43′

METHOD COUNT(*) ROUND(AVG(TIME_ELA),0) SUM(TIME_ELA)

Original: https://www.cnblogs.com/lfree/p/15765338.html
Author: lfree
Title: [20220104]in list 几种写法性能测试.txt

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/606226/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Redis 主从复制

    Redis主从复制的原理 当建立主从关系时,slave配置slaveof 当redis生成dump.rdb文件时,工作过程如下 redis主进程fork一个子进程 fork出来的子…

    Linux 2023年5月28日
    094
  • Spring Security登录的流程

    Spring Security登录的流程 1、UsernamePasswordAuthenticationFilter这过滤器开始 attemptAuthentication方法 …

    Linux 2023年6月7日
    0201
  • 飞鸽传书:一个局域网QQ

    推荐一个类似局域网QQ的免费软件——飞鸽传书,支持windows、mac、Linux、安卓、苹果手机。 飞鸽传书:一个局域网QQ 局域网文件和消息互传应该用什么呢?在这里推荐一个类…

    Linux 2023年6月6日
    0107
  • JDK8-Lambda 表达式

    Lambda 表达式 Lambda 表达式是 JDK8 的一个新特性,可以取代大部分的匿名内部类,写出更优雅的 Java 代码,尤其在集合的遍历和其他集合操作中,可以极大地优化代码…

    Linux 2023年6月13日
    078
  • Makefile

    target … : prerequisites … command … … target可以是一个object file(目标文件),也可以是一个执行文件,还可以…

    Linux 2023年6月7日
    092
  • Linux安装nginx

    Linux安装nginx (1)安装c++编译环境装备yum install gcc gcc-c++ (2)安装PCRE库tar -zxvf pcre-8.38.tar.gzcd …

    Linux 2023年6月13日
    074
  • linux DMA接口

    1.1. 一致性DMA映射(Consistent DMA mappings ) 主要用于映射长时间使用的区域。 CPU和DMA controller不需要考虑cache的影响。 1…

    Linux 2023年6月6日
    064
  • 关于HandlerInterceptorAdapter和WebMvcConfigurerAdapter过时

    修改成这样 @Configuration public class HeaderTokenInterceptor implements WebMvcConfigurer { @Au…

    Linux 2023年6月8日
    0101
  • 网络设备配置–10、利用ACL配置访问控制

    一、前言 同系列前几篇:网络设备配置–1、配置交换机enable、console、telnet密码网络设备配置–2、通过交换机划分vlan网络设备配置&#8…

    Linux 2023年6月8日
    0111
  • zabbix自定义监控mysql主从状态和延迟

    zabbix自定义监控mysql主从状态和延迟 zabbix自定义监控mysql主从状态和延迟 zabbix自定义监控mysql主从状态 zabbix自定义监控mysql主从延迟 …

    Linux 2023年6月13日
    0120
  • SpringBoot入门-Redis(六)

    package com.vast; import com.vast.dao.AccountRepository; import com.vast.dao.IAccountMybat…

    Linux 2023年5月28日
    070
  • 让gitlab暴露node-exporter供外部prometheus使用

    花了两天部署了一套监控服务 prometheus+node-exporter+grafana,公司的gitlab服务器准备部署node-exporter的时候突然发现gitlab已…

    Linux 2023年6月7日
    0132
  • cgroup-v1在android中的应用实现浅析

    本文档内容主要是分析android设备中cgroup v1实现了哪些控制器,他们有哪些子控制器以及如何配置这些控制器的。 我是使用红米Note4Plus的开发版本来调研分析的,手机…

    Linux 2023年6月7日
    0109
  • 如何设置redis中hash的field的expire ?

    redis 127.0.0.1:6379> hset expire:me name tom (integer) 0 redis 127.0.0.1:6379> hget…

    Linux 2023年5月28日
    0122
  • python入门基础知识二(字符串的常用操作方法)

    索引从0开始,每个标点也算一位 序列[开始位置:结束位置:步长] 步长可以是负数, 为负时输出结果为倒序。 var.find/rfind(‘chars’, …

    Linux 2023年6月7日
    095
  • ES6

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> &lt…

    Linux 2023年6月13日
    090
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球