select
    *
from
    a
where
    exists(select 1 from b,c where b.pkid=c.bid and a.pkid=c.aid and b.keyword like '%中国%')
    and
    exists(select 1 from b,c where b.pkid=c.bid and a.pkid=c.aid and b.keyword like '%艺术%')

解决方案 »

  1.   

    libin_ftsafe的写法清晰了许多,本质上和方法1一致,但是当查询量大的时候,效率很低,需要10秒左右,甚至超时。
    机器配置2个xeon2.0G,1G内存,应该还可以,但就是速度慢,各种资源几乎满载。原来是单表查询,所有关键字放在一个字段内,算法:like '%xx%' and like '%xx%',很慢,
    更改为现状,但是因为模糊查询,不能用到索引,效率还是很低。不知各位还有何高见,可以从更改表设计结构考虑。
      

  2.   

    oracle 有 intersect和minus运算符,sql好像没有
      

  3.   

    --SQL用In,NOT IN 代替 intersect,minus关键字!
      

  4.   

    --SQL用In,NOT IN 代替 intersect,minus关键字!原来这样,我还以为intersect是什么高级算法。