where tj in ('c623af:1098b9eeec9:-24d7','c623af:1098b9eeec9:6004','1478a43:10999aff49a:-6f03','c623af:1098b9eeec9:6abf'
,'c623af:1098b9eeec9:41c9','c623af:1098b9eeec9:41cc','c623af:1098b9eeec9:6e57','c623af:1098b9eeec9:41c6','af72d8:1066bff2970:-576b',
'c623af:1098b9eeec9:-2505')这样的效率非常低,怎样优化一下,这条件语句写成exists很困难。
,'c623af:1098b9eeec9:41c9','c623af:1098b9eeec9:41cc','c623af:1098b9eeec9:6e57','c623af:1098b9eeec9:41c6','af72d8:1066bff2970:-576b',
'c623af:1098b9eeec9:-2505')这样的效率非常低,怎样优化一下,这条件语句写成exists很困难。
解决方案 »
- oracle视图怎么做dml操作
- Oracle启动问题
- 有一个cs程序,多个人使用一种操作访问数据库,结果导致操作速度变慢,请问如何优化?
- .Net平台操作oraclec为何总是存在大量Inactive的seesion连接?如何释放?
- 请教一个oracle调用webservices的问题
- oracle9i与10g对于group by的自动排序
- 关于时间统计的问题(但晚上22:00到上午8:00前不计算)
- oracle 出现问题 求助高手!急!
- 100分求救导出终止失败原因!!
- 如何在sqlplus里修改系统的参数:共享池、vga、、、、、等参数?
- 请教一个ROWID问题
- 为什么同样算法的语句在MS SQL和Oralce中会得到不同的结果?
能否把sql贴出来?
,'c623af:1098b9eeec9:41c9','c623af:1098b9eeec9:41cc','c623af:1098b9eeec9:6e57','c623af:1098b9eeec9:41c6','af72d8:1066bff2970:-576b',
'c623af:1098b9eeec9:-2505') and t.column2=1 order by t.column1,t.column2 desc
2.重新设计数据库。
看你的字段应该属于A:B:C
典型的一对多样式, 采用树样式。A、B、C各占一个字段,然后拼接。这样在海量数据上应该有一定提高。
如下方式:
c623af---〉1
1098b9eeec9----〉2
-6f03----〉3
拼接成123
WHERE ID IN (123,)
前端传入进行处理一下。
以上作为子查,然后再从这个子查中查询。本人没有试验过。
select * from table1 t where exists
(select column1 from
(select 'c623af:1098b9eeec9:-24d7' column1 from dual
union all
select 'c623af:1098b9eeec9:6004' from dual
union all
select '1478a43:10999aff49a:-6f03' from dual
union all
select 'c623af:1098b9eeec9:6abf' from dual
union all
select 'c623af:1098b9eeec9:41c9' from dual
union all
select 'c623af:1098b9eeec9:41cc' from dual
union all
select 'c623af:1098b9eeec9:6e57' from dual
union all
select 'c623af:1098b9eeec9:41c6' from dual
union all
select 'af72d8:1066bff2970:-576b' from dual
union all
select 'c623af:1098b9eeec9:-2505' from dual) t2
where t.column1=t2.column1
and t.column2=1 ) order by t.column1,t.column2 desc
所以先用union all试试
2 union all 可能会导致记录数变多,不能用
3 关键是你的t.column1要有索引,并确保能用上,才是最快的方法,检查下执行计划,索引是否正确使用上了。