首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SQL 优化有关问题? * 页面打开特慢, 帮看看其中的SQL 有什么好的方案

2012-03-05 
SQL 优化问题? ************ 页面打开特慢, 帮看看其中的SQL 有什么好的方案?%dowhilenotrs.eofcigbrandc

SQL 优化问题? ************ 页面打开特慢, 帮看看其中的SQL 有什么好的方案?

<%        

do   while   not   rs.eof    
  cigbrandcode=rs( "cigbrand ")
  printnum1=rs( "printnum1 ")
%>
<%
'---------------------   通过卷烟代码,查询卷烟名称;
sql1= "select   *   from   qjcf31_barcodeprinter.dbo.CIGBRAND   where   CIGBRANDCODE= ' "+cigbrandcode+ " ' "
rs1.open   sql1,conn,1,1        
if   not   rs1.eof   then  
cigbrand=rs1( "cigbrand ")
end   if
rs1.close

%>
        <%
'---------------------   通过卷烟代码,查询排产数/读码数;

sql1= "SELECT   sum(arrangenum)   as   arrangenum1,sum(downnum)   as   downnum1   "
sql1=sql1+ "   FROM   (   "
sql1=sql1+ "   SELECT   *   FROM   qjcf31_barcodeprinter.dbo.arrange   where   cigbrandcode= ' "+cigbrandcode+ " '     and   (convert(char(10),producedate,120)> = ' "+begindate+ " '   and   convert(char(10),producedate,120) <= ' "+enddate+ " ')   "  
sql1=sql1+ "   UNION   SELECT   *   FROM   QJCF32_BARCODEPRINTER.dbo.arrange   where   cigbrandcode= ' "+cigbrandcode+ " '     and   (convert(char(10),producedate,120)> = ' "+begindate+ " '   and   convert(char(10),producedate,120) <= ' "+enddate+ " ')   "
sql1=sql1+ "   UNION   SELECT   *   FROM   QJCF33_BARCODEPRINTER.dbo.arrange   where   cigbrandcode= ' "+cigbrandcode+ " '     and   (convert(char(10),producedate,120)> = ' "+begindate+ " '   and   convert(char(10),producedate,120) <= ' "+enddate+ " ')   "
sql1=sql1+ "   UNION   SELECT   *   FROM   QJCF34_BARCODEPRINTER.dbo.arrange   where   cigbrandcode= ' "+cigbrandcode+ " '     and   (convert(char(10),producedate,120)> = ' "+begindate+ " '   and   convert(char(10),producedate,120) <= ' "+enddate+ " ')   "
sql1=sql1+ "   UNION   SELECT   *   FROM   QJCF35_BARCODEPRINTER.dbo.arrange   where   cigbrandcode= ' "+cigbrandcode+ " '     and   (convert(char(10),producedate,120)> = ' "+begindate+ " '   and   convert(char(10),producedate,120) <= ' "+enddate+ " ')   "
sql1=sql1+ "   UNION   SELECT   *   FROM   QJCF36_BARCODEPRINTER.dbo.arrange   where   cigbrandcode= ' "+cigbrandcode+ " '     and   (convert(char(10),producedate,120)> = ' "+begindate+ " '   and   convert(char(10),producedate,120) <= ' "+enddate+ " ')   "
sql1=sql1+ "   UNION   SELECT   *   FROM   QJCF37_BARCODEPRINTER.dbo.arrange   where   cigbrandcode= ' "+cigbrandcode+ " '     and   (convert(char(10),producedate,120)> = ' "+begindate+ " '   and   convert(char(10),producedate,120) <= ' "+enddate+ " ')   "
sql1=sql1+ "   UNION   SELECT   *   FROM   QJCF38_BARCODEPRINTER.dbo.arrange   where   cigbrandcode= ' "+cigbrandcode+ " '     and   (convert(char(10),producedate,120)> = ' "+begindate+ " '   and   convert(char(10),producedate,120) <= ' "+enddate+ " ')   "


sql1=sql1+ "   UNION   SELECT   *   FROM   QJCF39_BARCODEPRINTER.dbo.arrange   where   cigbrandcode= ' "+cigbrandcode+ " '     and   (convert(char(10),producedate,120)> = ' "+begindate+ " '   and   convert(char(10),producedate,120) <= ' "+enddate+ " ')   "
sql1=sql1+ "   )   X   "


rs1.open   sql1,conn,1,1      

arrangenum1=rs1( "arrangenum1 ")
downnum1=rs1( "downnum1 ")
col_printnum3=col_printnum3+arrangenum1
col_printnum4=col_printnum4+downnum1

rs1.close

%>
       


[解决办法]
尝试将QJCF31_BARCODEPRINTER至QJCF39_BARCODEPRINTER这多个数据库实例中同名表建为一个索引视图,然后在程序中从视图检索数据。
[解决办法]
子陌,你的方案不行吧,帮助里说索引试图引用的表必须在同一数据库中,而且不能有union等运算符的
[解决办法]
设计有问题吧

在现有的情况下,想办法通过连接查询代替循环减少查询次数应该是增加效率的好方法

[解决办法]
用存储过程,减少前台程序与数据库的交互次数

热点排行
Bad Request.