oracle9i,数据量目前在10万左右.
如果我直接用:
select * from table_name ;
这个很快,大约1秒就返回数据到界面了.但是,当有条件查询的时候,比如:
select * from table_name where type="xx";就很慢了,要大约1分钟左右才能返回数据.这才加一个条件就这么慢了,如果我加条件那就更慢了.
请教高手有什么优化的手段?
谢谢!
如果我直接用:
select * from table_name ;
这个很快,大约1秒就返回数据到界面了.但是,当有条件查询的时候,比如:
select * from table_name where type="xx";就很慢了,要大约1分钟左右才能返回数据.这才加一个条件就这么慢了,如果我加条件那就更慢了.
请教高手有什么优化的手段?
谢谢!
这个很快,大约1秒就返回数据到界面了
这时因为oracle只返回了前面一部分记录而已,如果要返回所有记录同样会慢但是,当有条件查询的时候,比如:
select * from table_name where type="xx";就很慢了,要大约1分钟左右才能返回数据.
建议对type列建立索引
如果还是慢,执行计划也帖出来
2:统计表table_name信息。
3:如果还不行,贴执行计划吧。
楼主出手大方, 赞一个如果type上没有索引, 这两个语句应该都是全表扫描,
从返回的记录数上来说, 语句1执行所花费的时间可能更多(也有可能少), 因为它返回整个表楼主所看到的马上返回数据的过程, 和需要一分钟才有返回的区别, 打个比方, 比如货车卸货:
如果所有的货都需要卸, 工人来了直接搬就可以了,
而如果只想卸type='xxx'的货, 那么先要挑选, 然后才能搬所以楼主看到记录的时间有区别, 这个区别就是挑选花费的时间要有明确的解决方案, 如楼上大侠们所言, 需要搜集统计信息和查看执行计划
我尝试过建立索引,使用系统函数instr代替,全文检索,效果都没我想象中那样好。不知道各位兄弟姐妹还有其他的什么方法优化吗?