oracle 单表查询百万级别数据,使用order by主键id,查询速度很慢,怎么优化
select*fromtb_communication_loglorderbyl.iddesc;--耗费40s...
select * from tb_communication_log l order by l.id desc; -- 耗费40s
展开
1个回答
展开全部
如果不怕,占用空间的话,
1。创建物理视图。在试图中固化排序。
2。你的数据是百万级别,测试一下你的时间是耗费在排序上,还是数据提取上。甚至显示上。
3。你的id是数字型的吧,要是字符型,那肯定慢啊。
4。使用存储过程中的pipeline来提取数据。
1。创建物理视图。在试图中固化排序。
2。你的数据是百万级别,测试一下你的时间是耗费在排序上,还是数据提取上。甚至显示上。
3。你的id是数字型的吧,要是字符型,那肯定慢啊。
4。使用存储过程中的pipeline来提取数据。
追问
1、物理视图实时性是不是不能保证
2、时间耗费在了排序上 直接select * from table 很快
3、number型 的
4、这个怎么弄?
追答
如果能够确认时间消耗在排序上,那4就不必要了。那是优化传输的。分批传输数据。
物理试图实时性,受刷新影响,快刷新,定期刷新。
快刷新是commit时刷新。你可以测试一下。至于能不能适合你的系统,就要自己验证了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询