SELECT DISTINCT SYOHINCD,SYOMEIKJ,SUB_SYOMEIKJ,CYOSYAKJ,SYUPNKJ,HONTAI FROM WODR_MST_SYOHIN WHERE 0 = 0 AND to_char(HATUBAIBI,'yyyy-mm')='2008-01' 我现在的数据库,有100万左右的数据!根据输入的,年和月想模糊查询出来相应的项目!
以上,使我现在的代码,可以实现!但是速度,是个大问题!
高人指点!可否有其他办法!数据库类型,为date, oracle10g
以上,使我现在的代码,可以实现!但是速度,是个大问题!
高人指点!可否有其他办法!数据库类型,为date, oracle10g
把这个换成HATUBAIBI = to_date(.....)
并且,对HATUBAIBI建立索引要知道OCI_DATE类型,在Oracle的内存里头才占7个字节。索引后的效率是非常高的。
2008-01, 也就是2008-01-01 至 2008-01-31 23:59:59你写成:
HATUBAIBI between to_date('2008-01-01', 'yyyy-mm-dd') and to_date('2008-01-31 23:59:59')就OK了
使用了contains函数,速度似乎快了一点,也许是极限了!
analyze table .. compute statistics 用这种方式:
HATUBAIBI between to_date('2008-01-01', 'yyyy-mm-dd') and to_date('2008-01-31 23:59:59')
才可以用上索引
我这里输入只有起始的年月,如何查询?没有and后面的日期,不过我可以自己计算
那就是用大于(>)来比较洛