日期:2014-05-17  浏览次数:20501 次

如何优化这断程序的访问速度?
SELECT Y_yb_js.c_yb_lsh, U_jzsfk_m.c_receipt_no, U_jzsfk_m.c_brname, Y_yb_js.c_tc_zf+Y_yb_js.c_zf_zf+Y_yb_js.c_gwy_bz+Y_yb_js.c_xj_zf+Y_yb_js.c_de_zf AS hjje, U_jzsfk_m.c_jf_date, P_deptemp.c_name, Y_yb_js.c_tc_zf, Y_yb_js.c_zf_zf, Y_yb_js.c_gwy_bz, Y_yb_js.c_xj_zf, Y_yb_js.c_de_zf, Y_yb_js.c_gwy_fh, Y_yb_js.c_qt_zf, Y_yb_js.c_zf_ye, Y_yb_js.c_ry_type, Y_yb_js.c_yb_type, Y_yb_js.c_reg_id 
FROM u_jzsfk_m U_jzsfk_m INNER JOIN u_reg_out U_reg_out ON U_jzsfk_m.c_reg_id = U_reg_out.c_id INNER JOIN p_deptemp P_deptemp ON U_reg_out.c_op_code = P_deptemp.c_code INNER JOIN y_yb_js Y_yb_js ON Y_yb_js.c_yb_lsh = U_jzsfk_m.c_ybjs_lsh 
WHERE Y_yb_js.c_yb_type IS NULL AND Y_yb_js.c_ry_type = '13' and U_jzskf.c_jf_date>='2011.12.01'
ORDER BY U_jzskf.c_jf_date DESC

------解决方案--------------------
SQL code
 在U_jzskf.c_jf_date上加上索引看看

------解决方案--------------------
看你联表查询比较多,联表查询的优化方向:1.on后面的字段都是聚集索引,并且两个表的行数差不多,这是最快的一种联表查询 2.如果业务需求无法满足1所说的方向,一般是循环联表查询,查询结果行数少的放在左输入。

还有一点是2楼已经说过的,where后面的字段最好也有索引,索引自己权衡的加

如果还是无法提高速度,就考虑怎么减少联表查询,看sql语句能否换换。


------解决方案--------------------
Y_yb_js.c_yb_type IS NULL
是大忌