我这里有段代码原来是用prepareStatement的批处理来处理一批sql语句:
select p.datatype, p.userfieldid, u.datetimevalue, u.intvalue, u.stringvalue, u.decimalvalue, u.notes from tr_userfield p, tr_requestvalue u where p.userfieldid = u.userfieldid and u.userfieldid in (6580,6561,6562) and u.requestid = ?
在执行的时候循环赋值,我想提高下查询的效率,所以用IN来替换:
select u.requestid,p.datatype, p.userfieldid, u.datetimevalue, u.intvalue, u.stringvalue, u.decimalvalue, u.notes from tr_userfield p, tr_requestvalue u where p.userfieldid = u.userfieldid and u.userfieldid in (6580,6561,6562) and u.requestid in(2540,2541,2560,2406,2408,2411,2412,2414,2416,2417,2420,2424,2423,2428,2435,2429,2430,2431,2433,2434,2436,2399,2437,2444,2438,2440,2441,2660,2661,2700,2449,2450,2454,2641,2402,2600,2419,2458,2680,2620,2461,2463,2464,2465,2640,2720,2580,2468,2469,2470,2418,2473,2474,2446,2451,2453,2456,2581)order by u.requestid
但是执行之后发现时间并没有减少,是不是prepareStatement的批处理效率已经很高了不能再优化了?用
IN的SQL用了order by, 是不是这个原因呢?
select p.datatype, p.userfieldid, u.datetimevalue, u.intvalue, u.stringvalue, u.decimalvalue, u.notes from tr_userfield p, tr_requestvalue u where p.userfieldid = u.userfieldid and u.userfieldid in (6580,6561,6562) and u.requestid = ?
在执行的时候循环赋值,我想提高下查询的效率,所以用IN来替换:
select u.requestid,p.datatype, p.userfieldid, u.datetimevalue, u.intvalue, u.stringvalue, u.decimalvalue, u.notes from tr_userfield p, tr_requestvalue u where p.userfieldid = u.userfieldid and u.userfieldid in (6580,6561,6562) and u.requestid in(2540,2541,2560,2406,2408,2411,2412,2414,2416,2417,2420,2424,2423,2428,2435,2429,2430,2431,2433,2434,2436,2399,2437,2444,2438,2440,2441,2660,2661,2700,2449,2450,2454,2641,2402,2600,2419,2458,2680,2620,2461,2463,2464,2465,2640,2720,2580,2468,2469,2470,2418,2473,2474,2446,2451,2453,2456,2581)order by u.requestid
但是执行之后发现时间并没有减少,是不是prepareStatement的批处理效率已经很高了不能再优化了?用
IN的SQL用了order by, 是不是这个原因呢?
LZ给的例子好像是有规律的,都比较接近,24## / 25##
可以找出最大最小值用一个between .. and ..把该取的数据一次取出来再处理一下呢?
用JDBC优化效果不大
1>.在条件表达式中经常用到的不同值较多的列上建立索引2>.在不同值少的列上不要创建索引
比如:在员工表的[性别]列上只有“男”或者“女”两个不同值,如果建立索引,不但不会提高查询效率,反而会降低更新速度3>.在经常进行连接,但是没有指定为外键的列上建立索引4>.在频繁进行排序或分组的列上建立索引5>.在连接查询中,对表的顺序存取可能对查询效率产生致命的影响。避免这种情况的主要方法就是对连接的列进行索引。
在一个跟采用何种DB有关的。