1.是不是可以减少一下查询的数据量,
2.是不是可以不对b.F_senddate进行运算
比如:select id from table1 where id*2>4 写成select id from table1 where id>2
2.是不是可以不对b.F_senddate进行运算
比如:select id from table1 where id*2>4 写成select id from table1 where id>2
3,
sum(isnull(b.f_gpadd1,0)),sum(isnull(b.f_gpadd2,0)),sum(isnull(b.f_gpadd3,0)),
sum(isnull(b.f_gpadd4,0)),sum(isnull(b.f_gpadd5,0)),sum(isnull(b.f_gpadd6,0)),
sum(isnull(b.f_gpadd7,0)),sum(isnull(-b.f_gpadd8,0))
from
t_books b
where
(b.F_flag = 2)
and
(isnull(b.F_senddate,'3000-08-14')>=@fromDate and isnull(b.F_senddate,'3000-08-14')<=@toDate)
(isnull(b.F_senddate,'3000-08-14')>=@fromDate and isnull(b.F_senddate,'3000-08-14')<=@toDate)
a.如果 F_senddate 不为空,那么 也就是 F_senddate between @fromDate and @toDate
b.如果 F_senddate 为null 值,那么
(isnull(b.F_senddate,'3000-08-14')>=@fromDate and isnull(b.F_senddate,'3000-08-14')<=@toDate)
为 '3000-08-14' >= @fromDate and '3000-08-14' <= @toDate ,此处有什么意义,按照现在的时间来看,此处2个条件明显为假,其实楼主的目的无非就是出去掉 b.F_senddate 为null的数据
总结
select 3,sum(b.f_gpadd1,),sum(b.f_gpadd2),sum(b.f_gpadd3),sum(b.f_gpadd4)
,sum(b.f_gpadd5),sum(b.f_gpadd6),sum(b.f_gpadd7),sum(b.f_gpadd8)
from t_books b
where b.F_flag = 2
and b.F_senddate between @fromDate and @toDate
用一下的语句
select 3,sum(b.f_gpadd1,),sum(b.f_gpadd2),sum(b.f_gpadd3),sum(b.f_gpadd4)
,sum(b.f_gpadd5),sum(b.f_gpadd6),sum(b.f_gpadd7),sum(b.f_gpadd8)
from t_books b
where b.F_flag = 2
and b.F_senddate between @fromDate and @toDate
执行需要15秒左右
但是我这个存储过程,在程序中运行,执行到这里,还是都提示执行超时,数据连接失败!!!