精华内容
下载资源
问答
  • 行业资料-电子功用-用于提高燃煤发电设备的联合循环效率的脱水系统和过程
  • 我现在写了一个代码 代码中for循环循环中有个查询语句,如果循环次数多会很慢;给大神详细解释下: ...大神指教 oracle有没有办法把这两个sql弄到一起变成一个oracle内部循环大神帮忙写下 感谢
  • 多维度查询时通常需要建立多个游标循环,查询效率无法得到保障,现在通过游标和substr()函数相结合的方式提高查询效率
  • 迭代器输出List与加强型for循环效率比较 **·**最近总结一下自己学习JAVA的过程,po一些有趣的东西,就比如下面这个 两种输出List里数据的方法 我们输出List数据的时候,一般有两种方法 ...

    迭代器输出List与加强型for循环的效率比较

    **·**最近总结一下自己学习JAVA的过程,po一些有趣的东西,就比如下面这个

    两种输出List里数据的方法

    我们输出List数据的时候,一般有两种方法:

    一、使用加强型for循环

    二、使用迭代器

    //迭代器的实现
    迭代器的实现

    两种方法输出数据时间的比较

    在这里插入图片描述

    结果比较

    **·**结果显示的是输出的时间在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 在for循环中每次循环都需要对i进行是否越界的判断,而while循环查找只要对比一次即可,避免了查找过程中每次比较后都要判断查找位置是否越界的小技巧,看似与原先差别不大,但是总数据较多时,效率提高很明显,是...
    int ID_Conv_Sentinel(int u16device_cfg_num)
    {
        int i8id;
    	
    	int size=0;
        int i=0;
    	
    	size = sizeof(Device_ID_Table)/sizeof(Device_ID_Table[0]);
    	
    	while(Device_ID_Table[i]!=u16device_cfg_num)
    	{
    		//遍历0到size-1的数值
    		i++;
    		if(i==size)
    		{
    			i = -1;
    			break;	//必须break,否则数组溢出
    		}
    		//如果i未达到size-1,会自动退出while循环
    	}
    	
    	i8id = i;
    	
    	return i8id;
    }
    
    
    int ID_Conv(int u16device_cfg_num)
    {
    	int i8id;
    	
    	int size=0,i = 0;
    
    	size = sizeof(Device_ID_Table)/sizeof(Device_ID_Table[0]);
    	
    	for(i=0; i<size; i++)
        {
    		//如果好列表中的有符合,则把i保存
    		if(u16device_cfg_num == Device_ID_Table[i])
    		{
    			i8id = i;
    			break;	//跳出循环,不再查找
    		}
        }
    	if(i == size)
    	{
    		//如果已经遍历完毕,仍未找到,则返回-1
    		i8id = -1;
    	}
    	
    	return i8id;
    }

    在for循环中每次循环都需要对i进行是否越界的判断,而while循环查找只要对比一次即可,避免了查找过程中每次比较后都要判断查找位置是否越界的小技巧,看似与原先差别不大,但是总数据较多时,效率提高很明显,是非常好的编程技巧。当然,“哨兵”也不一定在数组开始,也可以在数组的末端甚至是任何位置。
     

    展开全文
  • 同类问题:《 JAVA执行SQL语句,组合成一条...改进过程中,需要用到很多for循环,很费脑力,且易出错;改进后程序不容易被其他人看懂:直接用mysql是很容易被理解的(一目了然)。这也算是修改程序过程中的一点得失吧。

    同类问题:《JAVA执行SQL语句,组合成一条和分开执行,哪个效率高些?

    问题:

    需要做统计表格,统计很多种类型的数据(如下图),因为统计数据过多,导致每次进入此模块时,要等待很久,反映太慢。


    分析:

    这里统计时每一个单元格的数据都是通过一条sql语句去取的一个结果,每点击一次统计,后台监控看到无数条(太多)sql在执行,难道是sql执行效率过低?

    处理方式:

    减少sql执行次数。通过分组、分类别查询到结果,然后通过for循环来组合结果值。

    结果:

    反映很快速,又是闪开的感觉,效果很明显。sql执行效率果然不高。

    优点:反映快速;

    缺点:改进过程中,需要用到很多for循环,很费脑力,且易出错;改进后程序不容易被其他人看懂:直接用mysql是很容易被理解的(一目了然)。这也算是修改程序过程中的一点得失吧。

    展开全文
  • 一、概述 在实际的软件开发项目中,我们经常会遇到需要创建多个相同类型的...与之相对应的,可以用一个存储过程实现对所有表的操作,也可以循环建立存储过程,每个存储过程实现对某个特定表的操作。 本文中,我们

    一、概述
    在实际的软件开发项目中,我们经常会遇到需要创建多个相同类型的数据库表或存储过程的时候。例如,如果按照身份证号码的尾号来分表,那么就需要创建10个用户信息表,尾号相同的用户信息放在同一个表中。
    对于类型相同的多个表,我们可以逐个建立,也可以采用循环的方法来建立。与之相对应的,可以用一个存储过程实现对所有表的操作,也可以循环建立存储过程,每个存储过程实现对某个特定表的操作。
    本文中,我们建立10个员工信息表,每个表中包含员工工号(8位)和年龄字段,以工号的最后一位来分表。同时,我们建立存储过程实现对员工信息的插入。本文中的SQL语句基于ORACLE数据库实现。

    二、一般的实现方式
    在该实现方式中,我们逐个建立员工信息表,并在一个存储过程实现对所有表的操作。具体SQL语句如下:
    建表语句:

    -- tb_employeeinfo0
    begin
        execute immediate 'drop table tb_employeeinfo0 cascade constraints';
        exception when others then commit;
    end;
    
    /
    create table tb_employeeinfo0
    (
        employeeno      varchar2(10)  not null,         -- employee number
        employeeage     int           not null          -- employee age
    );
    create unique index idx1_tb_employeeinfo0 on tb_employeeinfo0(employeeno);
    
    prompt 'create table tb_employeeinfo0 ok';
    commit;
    
    -- tb_employeeinfo1
    begin
        execute immediate 'drop table tb_employeeinfo1 cascade constraints';
        exception when others then commit;
    end;
    
    /
    create table tb_employeeinfo1
    (
        employeeno      varchar2(10)  not null,         -- employee number
        employeeage     int           not null          -- employee age
    );
    create unique index idx1_tb_employeeinfo1 on tb_employeeinfo1(employeeno);
    
    prompt 'create table tb_employeeinfo1 ok';
    commit;
    
    -- tb_employeeinfo2
    begin
        execute immediate 'drop table tb_employeeinfo2 cascade constraints';
        exception when others then commit;
    end;
    
    /
    create table tb_employeeinfo2
    (
        employeeno      varchar2(10)  not null,         -- employee number
        employeeage     int           not null          -- employee age
    );
    create unique index idx1_tb_employeeinfo2 on tb_employeeinfo2(employeeno);
    
    prompt 'create table tb_employeeinfo2 ok';
    commit;
    
    -- tb_employeeinfo3
    begin
        execute immediate 'drop table tb_employeeinfo3 cascade constraints';
        exception when others then commit;
    end;
    
    /
    create table tb_employeeinfo3
    (
        employeeno      varchar2(10)  not null,         -- employee number
        employeeage     int           not null          -- employee age
    );
    create unique index idx1_tb_employeeinfo3 on tb_employeeinfo3(employeeno);
    
    prompt 'create table tb_employeeinfo3 ok';
    commit;
    
    -- tb_employeeinfo4
    begin
        execute immediate 'drop table tb_employeeinfo4 cascade constraints';
        exception when others then commit;
    end;
    
    /
    create table tb_employeeinfo4
    (
        employeeno      varchar2(10)  not null,         -- employee number
        employeeage     int           not null          -- employee age
    );
    create unique index idx1_tb_employeeinfo4 on tb_employeeinfo4(employeeno);
    
    prompt 'create table tb_employeeinfo4 ok';
    commit;
    
    -- tb_employeeinfo5
    begin
        execute immediate 'drop table tb_employeeinfo5 cascade constraints';
        exception when others then commit;
    end;
    
    /
    create table tb_employeeinfo5
    (
        employeeno      varchar2(10)  not null,         -- employee number
        employeeage     int           not null          -- employee age
    );
    create unique index idx1_tb_employeeinfo5 on tb_employeeinfo5(employeeno);
    
    prompt 'create table tb_employeeinfo5 ok';
    commit;
    
    -- tb_employeeinfo6
    begin
        execute immediate 'drop table tb_employeeinfo6 cascade constraints';
        exception when others then commit;
    end;
    
    /
    create table tb_employeeinfo6
    (
        employeeno      varchar2(10)  not null,         -- employee number
        employeeage     int           not null          -- employee age
    );
    create unique index idx1_tb_employeeinfo6 on tb_employeeinfo6(employeeno);
    
    prompt 'create table tb_employeeinfo6 ok';
    commit;
    
    -- tb_employeeinfo7
    begin
        execute immediate 'drop table tb_employeeinfo7 cascade constraints';
        exception when others then commit;
    end;
    
    /
    create table tb_employeeinfo7
    (
        employeeno      varchar2(10)  not null,         -- employee number
        employeeage     int           not null          -- employee age
    );
    create unique index idx1_tb_employeeinfo7 on tb_employeeinfo7(employeeno);
    
    prompt 'create table tb_employeeinfo7 ok';
    commit;
    
    -- tb_employeeinfo8
    begin
        execute immediate 'drop table tb_employeeinfo8 cascade constraints';
        exception when others then commit;
    end;
    
    /
    create table tb_employeeinfo8
    (
        employeeno      varchar2(10)  not null,         -- employee number
        employeeage     int           not null          -- employee age
    );
    create unique index idx1_tb_employeeinfo8 on tb_employeeinfo8(employeeno);
    
    prompt 'create table tb_employeeinfo8 ok';
    commit;
    
    -- tb_employeeinfo9
    begin
        execute immediate 'drop table tb_employeeinfo9 cascade constraints';
        exception when others then commit;
    end;
    
    /
    create table tb_employeeinfo9
    (
        employeeno      varchar2(10)  not null,         -- employee number
        employeeage     int           not null          -- employee age
    );
    create unique index idx1_tb_employeeinfo9 on tb_employeeinfo9(employeeno);
    
    prompt 'create table tb_employeeinfo9 ok';
    commit;

    存储过程创建语句:

    create or replace procedure pr_insertdata
    (
        v_employeeno   in   varchar2,
        v_employeeage  in   int
    )
    as 
        v_employeecnt     int;
        v_tableindex      varchar2(2);
    
    begin
        v_tableindex     := substr(v_employeeno, length(v_employeeno), 1);
    
        if v_tableindex = '0' then
        begin
            select count(*) into v_employeecnt from tb_employeeinfo0 where employeeno = v_employeeno;
            if v_employeecnt > 0 then       -- the employeeno is already in DB
            begin
                return;
            end;
            else                            -- the employeeno is not in DB
            begin
                insert into tb_employeeinfo0(employeeno, employeeage) values(v_employeeno, v_employeeage);
            end;
            end if;
        end;
        elsif v_tableindex = '1' then
        begin
            select count(*) into v_employeecnt from tb_employeeinfo1 where employeeno = v_employeeno;
            if v_employeecnt > 0 then       -- the employeeno is already in DB
            begin
                return;
            end;
            else                            -- the employeeno is not in DB
            begin
                insert into tb_employeeinfo1(employeeno, employeeage) values(v_employeeno, v_employeeage);
            end;
            end if;
        end;
        elsif v_tableindex = '2' then
        begin
            select count(*) into v_employeecnt from tb_employeeinfo2 where employeeno = v_employeeno;
            if v_employeecnt > 0 then       -- the employeeno is already in DB
            begin
                return;
            end;
            else                            -- the employeeno is not in DB
            begin
                insert into tb_employeeinfo2(employeeno, employeeage) values(v_employeeno, v_employeeage);
            end;
            end if;
        end;
        elsif v_tableindex = '3' then
        begin
            select count(*) into v_employeecnt from tb_employeeinfo3 where employeeno = v_employeeno;
            if v_employeecnt > 0 then       -- the employeeno is already in DB
            begin
                return;
            end;
            else                            -- the employeeno is not in DB
            begin
                insert into tb_employeeinfo3(employeeno, employeeage) values(v_employeeno, v_employeeage);
            end;
            end if;
        end;
        elsif v_tableindex = '4' then
        begin
            select count(*) into v_employeecnt from tb_employeeinfo4 where employeeno = v_employeeno;
            if v_employeecnt > 0 then       -- the employeeno is already in DB
            begin
                return;
            end;
            else                            -- the employeeno is not in DB
            begin
                insert into tb_employeeinfo4(employeeno, employeeage) values(v_employeeno, v_employeeage);
            end;
            end if;
        end;
        elsif v_tableindex = '5' then
        begin
            select count(*) into v_employeecnt from tb_employeeinfo5 where employeeno = v_employeeno;
            if v_employeecnt > 0 then       -- the employeeno is already in DB
            begin
                return;
            end;
            else                            -- the employeeno is not in DB
            begin
                insert into tb_employeeinfo5(employeeno, employeeage) values(v_employeeno, v_employeeage);
            end;
            end if;
        end;
        elsif v_tableindex = '6' then
        begin
            select count(*) into v_employeecnt from tb_employeeinfo6 where employeeno = v_employeeno;
            if v_employeecnt > 0 then       -- the employeeno is already in DB
            begin
                return;
            end;
            else                            -- the employeeno is not in DB
            begin
                insert into tb_employeeinfo6(employeeno, employeeage) values(v_employeeno, v_employeeage);
            end;
            end if;
        end;
        elsif v_tableindex = '7' then
        begin
            select count(*) into v_employeecnt from tb_employeeinfo7 where employeeno = v_employeeno;
            if v_employeecnt > 0 then       -- the employeeno is already in DB
            begin
                return;
            end;
            else                            -- the employeeno is not in DB
            begin
                insert into tb_employeeinfo7(employeeno, employeeage) values(v_employeeno, v_employeeage);
            end;
            end if;
        end;
        elsif v_tableindex = '8' then
        begin
            select count(*) into v_employeecnt from tb_employeeinfo8 where employeeno = v_employeeno;
            if v_employeecnt > 0 then       -- the employeeno is already in DB
            begin
                return;
            end;
            else                            -- the employeeno is not in DB
            begin
                insert into tb_employeeinfo8(employeeno, employeeage) values(v_employeeno, v_employeeage);
            end;
            end if;
        end;
        elsif v_tableindex = '9' then
        begin
            select count(*) into v_employeecnt from tb_employeeinfo9 where employeeno = v_employeeno;
            if v_employeecnt > 0 then       -- the employeeno is already in DB
            begin
                return;
            end;
            else                            -- the employeeno is not in DB
            begin
                insert into tb_employeeinfo9(employeeno, employeeage) values(v_employeeno, v_employeeage);
            end;
            end if;
        end;
        end if;
        commit;
    
    exception when others then
        begin
            rollback;
            return;
        end;
    end;
    /
    prompt 'create procedure pr_insertdata ok'

    三、循环创建的实现方式
    在该实现方式中,我们采用循环的方法建立员工信息表及存储过程。具体SQL语句如下:
    建表语句:

    -- tb_employeeinfo0~9
    begin
         declare i int;tmpcount int;tbname varchar2(50);strsql varchar2(1000);
         begin
             i:=0;
             while i<10 loop
             begin
                 tbname := 'tb_employeeinfo'||to_char(i);
                 i := i+1;
    
                 select count(1) into tmpcount from user_tables where table_name = Upper(tbname);
                 if tmpcount>0 then
                 begin
                     execute immediate 'drop table '||tbname;
                 commit;
                 end;
                 end if;
                 strsql := 'create table '||tbname||
                 '(
                      employeeno      varchar2(10)  not null,         -- employee number
                      employeeage     int           not null          -- employee age
                  )';
                 execute immediate strsql;   
                 strsql := 'begin 
                      execute immediate ''drop index idx1_'||tbname || ' '''
                      || ';exception when others then null;
                      end;';
                 execute immediate strsql;
    
                 execute immediate 'create unique index idx1_'||tbname||' on '||tbname||'(employeeno)';
    
             end;
             end loop;
         end;
    end;
    /

    存储过程创建语句:

    begin
        declare v_i int;v_procname varchar(50);v_employeeinfotbl varchar(50);strsql varchar(4000);
    begin
        v_i := 0;
        while v_i < 10 loop
            v_procname        := 'pr_insertdata'||substr(to_char(v_i),1,1);
            v_employeeinfotbl := 'tb_employeeinfo'||substr(to_char(v_i),1,1);
    
            v_i := v_i + 1;
            strsql := 'create or replace procedure '||v_procname||'(
                v_employeeno   in   varchar2,
                v_employeeage  in   int
            )
            as
                v_employeecnt     int;
    
            begin       
                select count(*) into v_employeecnt from '||v_employeeinfotbl||' where employeeno = v_employeeno;
                if v_employeecnt > 0 then       -- the employeeno is already in DB
                begin
                    return;
                end;
                else                            -- the employeeno is not in DB
                begin
                    insert into '||v_employeeinfotbl||'(employeeno, employeeage) values(v_employeeno, v_employeeage);
                end;
                end if;
                commit;
            exception when others then
                begin
                    rollback;
                    return;
                end;
            end;';
            execute immediate strsql;
        end loop;
        end;
    end;
    /

    四、总结
    当相同类型的表的个数较多时(如有上百个),显然用循环创建的实现方式可以节约大量的工作时间,提高工作效率。但是,在使用该方法的时候,要特别仔细,尤其要注意单引号的使用,避免为了省事而引入代码逻辑问题。


    本人微信公众号:zhouzxi,请扫描以下二维码:
    这里写图片描述

    展开全文
  • 遍历数组最常用到的for循环,是最为熟知的一种方法,在ES5中定义了一些新的遍历方法,更加适用于函数式编程,究竟其用法区别在哪,以及效率如何,接着下来亲自做个测试看一下。在Script中写入,  var testData =...
  • #coding:gbkimport timev=[0,0,0,0]count1=0'''题目:枚举出由len个字符构成的长度为t的所有符串。...在执行过程中,当t=1时表示处于循环的最内层,此时应当输出结果,共有len的t次方个结果。效率
  • 1.所谓的递归慢到底是什么原因呢? 大家都知道递归的实现是通过调用函数本身,函数调用的时候,每次调用时要做地址保存,参数传递等,这是通过一个递归工作栈实现的。...2.用循环效率会比递归效率高吗? 递归与循环
  • 写代码的过程中,经常需要遍历集合,选择一个搞笑的遍历方法非常重要,今天来看下for循环、foreach、迭代器效率比较,主要从ArrayList和LinkedList来分析。 直接上代码测试 ArrayList List&amp;amp;lt;Integer...
  • 通过存储过程实现记录集的循环

    千次阅读 2011-05-26 09:58:00
    存储过程实现记录集的循环取值效率比较---游标,临时表,CTE,自增序列等等
  • pl/sql中三种游标循环效率对比

    千次阅读 2013-07-03 01:33:27
    -----------------------------Cryking原创------------------------------ -----------------------转载请注明出处,谢谢!...这里主要对比以下三种格式的游标循环: 1.单条处理 open 游标; LOOP  FETCH 游标 INTO 变量;
  • 在PHP开发过程中,我们都知道在循环的时候,foreach效率比for高,但是为什么foreach效率高呢?其实这是跟PHP变量的数据结构有关。 typedef struct _zval_struct zval; struct _zval_struct { /* Variable ...
  • (1)SQL的使用规范:  i. 尽量避免大事务操作,慎用holdlock子句,提高系统并发能力。  ii. 尽量避免反复访问同一张或几张表,...如果使用了游标,就要尽量避免在游标循环中再进行表连接的操作。  iv. 注意w
  • memset初始化值的效率高于or循环

    千次阅读 2016-04-29 13:04:04
    在一亿数据的赋值下,memset使用了1ms,而for循环使用了136ms 贴上代码: #include #include #include #include #define MAXSIZE 10000 using namespace std; #include #include int get_time(string r...
  • 一般来说是后者效率高一些。原因是这样: ...如果in的字段建了索引in也是会用到的,所以结果就如楼上所说使用for循环会多很多次query的过程,很多时间消耗在网络请求上面。 一般做过代码分析的都知道,p
  • 在js中供给了indexOf()函数以获取某个字符在字符串中的index,可以经由过程它也断定某个字符或字符串是否存在。 但同时在js中for轮回也可以实现同样的结果(断定字符是否存在)。那么到底用哪个才好呢? ...
  • 在编程语言中,对比不同编程风格的代码写法,或者通过使用不同的编译器和编译优化参数,通过编译器生成汇编代码,静态分析所生成汇编代码的运行效率。    实验平台、工具 在window 7平台下,采用vc++ 6.0编译器...
  • 存储过程(Stored Procedure)是在大型数据库系统中...在数据量特别庞大的情况下利用存储过程能达到倍速的效率提升。 现在,我们有一张组织机构表(树形结构),需要将组织机构的全路径,并更新到表中的全路径字段中。...
  • 根据卡林纳循环发电效率高及氨水朗肯循环蒸发过程和冷凝过程都有较大温度变化的特点,提出了一种在非供暖季利用卡林纳循环发电而在供暖季利用氨水朗肯循环排热加热供暖水的卡林纳循环与氨水朗肯循环(AWKRC)组合系统....
  • GCC会自动为程序做一些优化处理,以提高程序的运行效率,如消除相同运算子句(一个计算式里出现多次“x+y”,则会先生动生成一个局部变量保存"x+y"的值,再做计算)、inlining、loop unrolling等。下面就loop ...
  • SqlServer存储过程性能效率的优化方法: 1、开发人员如果用到其他库的Table或View,务必在当前库中建立View来实现跨库操作,最好不要直接使用“databse.dbo.table_name”,因为sp_depends不能显示出该SP所使用的...
  • 循环buffer

    千次阅读 2017-08-27 16:52:03
    所以说这是个循环读写的过程,写指针写一个字节移动一次,读指针读一个字节移动一次,移动到buff的末尾位置,又从开始位置进行读写。重点代码分析:1、计算空闲空间/数据空间大小:设定总空间为size-1,始终保留1个...
  • 可以发现在小规模循环运算的过程中三者并没有明显的效率区别,但是总体来说,列表推导式的效率最高,其次是map()函数,正常的for循环效率是最低的,这一点尤其在解决大循环量问题时较为明显。
  • Oracle中游标使用效率比较 2013年09月26日 21:09:08 進擊的胖蛇 阅读数:4380 鸣谢:http://blog.163.com/gaoyutong122@126/blog/static/344697322012725344964/ 扩展:...
  • 一、首先说下本篇博客所实现功能的背景和功能是怎样的:  背景:因为公司项目开始迁移新平台... 功能:需要查询出某个日期节点后的几十万条订单信息,循环遍历每条订单,获取每条订单的交易额,从而根据订单中的商
  • Java for循环和foreach循环的性能比较

    万次阅读 多人点赞 2016-09-30 16:48:41
    在公司codereview过程中,发现一个问题,就是有些人循环用的是普通for循环,有些人用的是foreach循环,它们之间有什么区别?应该在什么时候使用这两种循环了? 两种循环的语法格式: 普通for循环语法: for (int i =...
  • nodejs事件和事件循环简介

    万次阅读 2020-12-06 21:37:03
    我们在javascript中监听这些事件,从而触发相应的处理。 同样的nodejs中也有事件,并且还有一个专门的events模块来进行专门的...同时事件和事件循环也是nodejs构建异步IO的非常重要的概念。 今天我们来详细了解一下。
  • PHP多维数组eval与循环实现以及效率 框架里有个获取多维数组配置参数 赋值和取值 的功能,之前是简单的使用 eval 实现的,但感觉使用 eval 是不太好的办法,一直想用其他办法取代 1. eval 的安全问题,2 性能...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 390,584
精华内容 156,233
关键字:

循环过程的效率怎么求