呵呵,你这么写的,肯定只能用like,in是没办法做的,而且in的效率也不高。
如果真的想快一点,表内的数据很多那么就分批查询,具体怎么分批,可以考虑分区,如果没有明显字段就hash分区,然后在每个分区中分别查询,这样速度就上来了,而且查询结果页相对出来的快一点。
如果一定要用in,那么你这里只能是根据逗号将keys字段分成几个字段,然后在分别用in来做,不过这样做的话查询的sql不会太短,我估计还没有like快呢。
这样的话也只能是一层一层的剥:先确定这个语句有没有结果:
结果1:select rerole.n_role_id
from TBL_USR_RE_ROLE rerole, TBL_USERS us
where us.n_usr_id = rerole.n_usr_id
and us.n_usr_id = 1716
如果有结果,再判断此语句有没有结果:
结果2:
select res.c_res_no
from TBL_RES res, TBL_ROLE_RE_RES re
where res.c_res_no = re.c_res_no
and re.c_auth_type = 'A'
and re.n_role_id in (结果1)
如果有结果,再判断此语句有没有结果:
SELECT t.c_res_no
FROM tbl_res t
START WITH t.c_res_no in (结果2)
CONNECT BY PRIOR t.c_p_res_no = t.c_res_no
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)