数据库用的是oracle
字段存储用的是XML
索引用的是全文索引
表:table 字段pxml
<?xml version="1.0" encoding="GBK"?>
<model id="f379f851-b1f9-48bf-8ac7-dafd2b1cedb0" name="hotel" objid="8873dc02-cf83-4527-95bb-e3025469e4ba">
<property id="3100" name="thedate">
<value>2009-09-07</value>
</property>
<property id="3101" name="thenum">
<value>26</value>
</property>
</model>现在用以下SQL查询,怎么样让结果准确效率又高
select 
  extractValue(v.pxml,'//property[@name="thedate"]/value'),
  extractValue(v.pxml,'//property[@name="thenum"]/value'),
  from tb v
 where
  CONTAINS(v.pxml,'haspath(//property[@name="thenum" and value>="10" and value<="50"])')>0  
   and to_date(extractValue(v.pxml, '//property[@name="thedate"]/value'),
               'yyyy-MM-dd') between to_date('2009-09-01', 'yyyy-MM-dd') and to_date('2009-09-30','yyyy-MM-dd')
------------------------------
以上SQL有两个问题,是我目前用全文索引无法解决的两个头痛问题:
1)、数值区间比较不对,根本查不到结果,但是如果直接用=就可以
2)、日期型我没找到XQUERY的比较方案,所以用了这个替代方案,结果是对的,但是效率差,和XQUERY用过全文索引的查询相差10-20倍的时间。比如没用全文索引的0.23S,用后0.02S等------------------------------
谢谢各位了!