您的位置:程序门 -> .net技术 -> vb.net



如何提高速度呀有代码(数据库)?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


如何提高速度呀有代码(数据库)?[已结贴,结贴人:xiongying18]
发表于:2007-10-03 21:42:40 楼主
下面的代码速度慢的要命,如何能快点
comm1.commandtext   =   "select   类型,日期,备刀份数,备刀人员,操作次数,新,一次,二次,三次,四次,五次,断新,断一,断二,断三,断四,断五,没新,没一,没二,没三,没四,没五   from   zt_data_history   where   类型=1   or   类型=2   or   类型=3   or   类型=4   or   类型=5   or   类型=6   or   类型=7"
                reader   =   comm1.EXECutereader
                do   while   reader.read
                        sl   =   reader("新")   +   reader("一次")   +   reader("二次")   +   reader("三次")   +   reader("四次")   +   reader("五次")
                        dd   =   reader("断新")   +   reader("断一")   +   reader("断二")   +   reader("断三")   +   reader("断四")   +   reader("断五")
                        mysl   =   reader("没新")   +   reader("没一")   +   reader("没二")   +   reader("没三")   +   reader("没四")   +   reader("没五")

                        datetimetemp   =   reader("日期")
                        dim   xh   as   integer   =   datetimetemp.hour
                        dim   fz   as   integer   =   datetimetemp.minute
                        if   xh   <   7   or   (xh   <   8   and   fz   <   30)   then   '当时间小于7:30时候将日期减1
                                datetimetemp   =   datetimetemp.adddays(-1)
                        end   if

                        comm2.commandtext   =   "select   id   from   zt_beidao_tj   where   日期=#"   &   datetimetemp.year   &   "-"   &   datetimetemp.month   &   "-"   &   datetimetemp.day   &   "#   and   id='"   &   reader("备刀人员")   &   "'"
                        reader2   =   comm2.EXECutereader
                        do   while   reader2.read
                                bdr   =   reader2("id")
                        loop
                        reader2.close()

                        select   case   reader("类型")
                                case   1
                                        if   bdr   =   ""   then
                                                comm2.commandtext   =   "insert   into   zt_beidao_tj(日期,id,备刀份数,备刀次数,备刀数量)   values('"   &   datetimetemp.year   &   "-"   &   datetimetemp.month   &   "-"   &   datetimetemp.day   &   "','"   &   reader("备刀人员")   &   "',"   &   reader("备刀份数")   &   ","   &   reader("操作次数")   &   ","   &   sl   &   ")"
                                                comm2.EXECutenonquery()
                                        else
                                                comm2.commandtext   =   "update   zt_beidao_tj   set   备刀份数=备刀份数+"   &   reader("备刀份数")   &   ",备刀次数=备刀次数+"   &   reader("操作次数")   &   ",备刀数量=备刀数量+"   &   sl   &   "   where   日期=#"   &   datetimetemp.year   &   "-"   &   datetimetemp.month   &   "-"   &   datetimetemp.day   &   "#   and   id='"   &   reader("备刀人员")   &   "'"
                                                comm2.EXECutenonquery()
                                        end   if
                                case   2
                                        if   bdr   =   ""   then
                                                comm2.commandtext   =   "insert   into   zt_beidao_tj(日期,id,填份份数,填份次数,填份数量)   values('"   &   datetimetemp.year   &   "-"   &   datetimetemp.month   &   "-"   &   datetimetemp.day   &   "','"   &   reader("备刀人员")   &   "',"   &   reader("备刀份数")   &   ","   &   reader("操作次数")   &   ","   &   sl   &   ")"
                                                comm2.EXECutenonquery()
                                        else
                                                comm2.commandtext   =   "update   zt_beidao_tj   set   填份份数=填份份数+"   &   reader("备刀份数")   &   ",填份次数=填份次数+"   &   reader("操作次数")   &   ",填份数量=填份数量+"   &   sl   &   "   where   日期=#"   &   datetimetemp.year   &   "-"   &   datetimetemp.month   &   "-"   &   datetimetemp.day   &   "#   and   id='"   &   reader("备刀人员")   &   "'"
                                                comm2.EXECutenonquery()
                                        end   if
                                case   3
                                        if   bdr   =   ""   then
                                                comm2.commandtext   =   "insert   into   zt_beidao_tj(日期,id,填加次数,填加数量)   values('"   &   datetimetemp.year   &   "-"   &   datetimetemp.month   &   "-"   &   datetimetemp.day   &   "','"   &   reader("备刀人员")   &   "',"   &   reader("操作次数")   &   ","   &   sl   &   ")"
                                                comm2.EXECutenonquery()
                                        else
                                                comm2.commandtext   =   "update   zt_beidao_tj   set   填加次数=填加次数+"   &   reader("操作次数")   &   ",填加数量=填加数量+"   &   sl   &   "   where   日期=#"   &   datetimetemp.year   &   "-"   &   datetimetemp.month   &   "-"   &   datetimetemp.day   &   "#   and   id='"   &   reader("备刀人员")   &   "'"
                                                comm2.EXECutenonquery()
                                        end   if
                                case   4
                                        if   bdr   =   ""   then
                                                comm2.commandtext   =   "insert   into   zt_beidao_tj(日期,id,完出次数,完出数量)   values('"   &   datetimetemp.year   &   "-"   &   datetimetemp.month   &   "-"   &   datetimetemp.day   &   "','"   &   reader("备刀人员")   &   "',"   &   reader("操作次数")   &   ","   &   sl   &   ")"
                                                comm2.EXECutenonquery()
                                        else
                                                comm2.commandtext   =   "update   zt_beidao_tj   set   完出次数=完出次数+"   &   reader("操作次数")   &   ",完出数量=完出数量+"   &   sl   &   "   where   日期=#"   &   datetimetemp.year   &   "-"   &   datetimetemp.month   &   "-"   &   datetimetemp.day   &   "#   and   id='"   &   reader("备刀人员")   &   "'"
                                                comm2.EXECutenonquery()
                                        end   if
                                case   5
                                        if   bdr   =   ""   then
                                                comm2.commandtext   =   "insert   into   zt_beidao_tj(日期,id,出库次数,出库数量)   values('"   &   datetimetemp.year   &   "-"   &   datetimetemp.month   &   "-"   &   datetimetemp.day   &   "','"   &   reader("备刀人员")   &   "',"   &   reader("操作次数")   &   ","   &   sl   &   ")"
                                                comm2.EXECutenonquery()
                                        else
                                                comm2.commandtext   =   "update   zt_beidao_tj   set   出库次数=出库次数+"   &   reader("操作次数")   &   ",出库数量=出库数量+"   &   sl   &   "   where   日期=#"   &   datetimetemp.year   &   "-"   &   datetimetemp.month   &   "-"   &   datetimetemp.day   &   "#   and   id='"   &   reader("备刀人员")   &   "'"
                                                comm2.EXECutenonquery()
                                        end   if
                                case   6
                                        if   bdr   =   ""   then
                                                comm2.commandtext   =   "insert   into   zt_beidao_tj(日期,id,完返次数,完返数量,完返断刀,完返没用)   values('"   &   datetimetemp.year   &   "-"   &   datetimetemp.month   &   "-"   &   datetimetemp.day   &   "','"   &   reader("备刀人员")   &   "',"   &   reader("操作次数")   &   ","   &   sl   &   ","   &   dd   &   ","   &   mysl   &   ")"
                                                comm2.EXECutenonquery()
                                        else
                                                comm2.commandtext   =   "update   zt_beidao_tj   set   完返次数=完返次数+"   &   reader("操作次数")   &   ",完返数量=完返数量+"   &   sl   &   ",完返断刀=完返断刀+"   &   dd   &   ",完返没用=完返没用+"   &   mysl   &   "   where   日期=#"   &   datetimetemp.year   &   "-"   &   datetimetemp.month   &   "-"   &   datetimetemp.day   &   "#   and   id='"   &   reader("备刀人员")   &   "'"
                                                comm2.EXECutenonquery()
                                        end   if
                                case   7
                                        if   bdr   =   ""   then
                                                comm2.commandtext   =   "insert   into   zt_beidao_tj(日期,id,返库次数,返库数量,返库断刀,返库没用)   values('"   &   datetimetemp.year   &   "-"   &   datetimetemp.month   &   "-"   &   datetimetemp.day   &   "','"   &   reader("备刀人员")   &   "',"   &   reader("操作次数")   &   ","   &   sl   &   ","   &   dd   &   ","   &   mysl   &   ")"
                                                comm2.EXECutenonquery()
                                        else
                                                comm2.commandtext   =   "update   zt_beidao_tj   set   返库次数=返库次数+"   &   reader("操作次数")   &   ",返库数量=返库数量+"   &   sl   &   ",返库断刀=返库断刀+"   &   dd   &   ",返库没用=返库没用+"   &   mysl   &   "   where   日期=#"   &   datetimetemp.year   &   "-"   &   datetimetemp.month   &   "-"   &   datetimetemp.day   &   "#   and   id='"   &   reader("备刀人员")   &   "'"
                                                comm2.EXECutenonquery()
                                        end   if
                        end   select
                        bdr   =   ""
                loop
                reader.close()
发表于:2007-10-03 21:46:521楼 得分:0
写一个方法,传参数吧
发表于:2007-10-04 18:01:272楼 得分:0
不慢才怪!
数据库表结构不规范
自己可以做一个数据库操作类,
也可以写存储过程,传标志进去执行。
发表于:2007-10-05 08:58:183楼 得分:0
你的语句写得也太麻烦.如:
类型=1   or   类型=2   or   类型=3   or   类型=4   or   类型=5   or   类型=6   or   类型=7"  
可以写成:类型   in   (1,2,3,4,5,6,7)
还有.像这种:
sl   =   reader("新")   +   reader("一次")   +   reader("二次")   +   reader("三次")   +   reader("四次")   +   reader("五次")  
完全可以在查询的时候计算好啊.就不用查询出这么多列了!!

还有就是注意使用索引+视图进行操作!
发表于:2007-10-05 09:10:244楼 得分:0
数据库结构改以下
发表于:2007-10-05 10:14:325楼 得分:0
是这样吗?视图是什么呀,怎么使用,我是新手不会呀
comm1.commandtext   =   "select   类型,日期,备刀份数,备刀人员,操作次数,sum([新])+sum([一次])+sum([二次])+sum([三次])+sum([四次])+sum([五次]),sum([断新])+sum([断一])+sum([断二])+sum([断三])+sum([断四])+sum([断五]),sum([没新])+sum([没一])+sum([没二])+sum([没三])+sum([没四])+sum([没五])   from   zt_data_history   where   类型   in   (1,2,3,4,5,6,7)"
发表于:2007-10-05 11:25:436楼 得分:80
你的下面的语句改一下:
"select   类型,日期,备刀份数,备刀人员,操作次数,sum([新])+sum([一次])+sum([二次])+sum([三次])+sum([四次])+sum([五次]),sum([断新])+sum([断一])+sum([断二])+sum([断三])+sum([断四])+sum([断五]),sum([没新])+sum([没一])+sum([没二])+sum([没三])+sum([没四])+sum([没五])   from   zt_data_history   where   类型   in   (1,2,3,4,5,6,7)
group   by   类型,日期,备刀份数,备刀人员,操作次数   "

视图你在数据里面建.用的sql语句新建视图,然后查询这个视图就行了!!
还要注意一点如:
sum([新])+sum([一次])+sum([二次])+sum([三次])+sum([四次])+sum([五次])   as   总次数
给一个新列名"总次数",方便程序调用!
发表于:2007-10-05 16:48:297楼 得分:0
group   by   类型,日期,备刀份数,备刀人员,操作次数   "

起什么作用呀
发表于:2007-10-05 16:54:488楼 得分:0

用owc制作excel中的柱形图、饼形图、折线图的源代码,绝对经典

 
发表于:2007-10-05 18:05:089楼 得分:0
"select   类型,日期,备刀人员,sum([备刀份数])   as   备刀份数,sum([操作次数])   as   操作次数,sum([新])+sum([一次])+sum([二次])+sum([三次])+sum([四次])+sum([五次])   as   使用,sum([断新])+sum([断一])+sum([断二])+sum([断三])+sum([断四])+sum([断五])   as   断刀,sum([没新])+sum([没一])+sum([没二])+sum([没三])+sum([没四])+sum([没五])   as   没用   from   zt_data_history   where   类型   in   (1,2,3,4,5,6,7)   group   by   类型,日期,备刀人员"


快速检索

最新资讯
热门点击