发现问题原因
Mysql,多表联查,或是内嵌套表查询,是比较慢的所以我们开发的时候,想的办法是,先把一个表的id全查出来,组合成1,2,3,4,5 查另一个表的时候in(1,2,3,4)
速度还是可以的,但是转成Oracle以后,发现,只是28万数据的一张表,竟然返回1000-3000个id也要十来秒但是从Oracle里大数据查找,还是很快的,只要返回的结果不是太大,
不知道是不是有什么设置错了,也在Oracle群里,和朋友讨论了一下,
他们也不是太清楚原因,但是他们的都是专业服务器,上万条,Plsql全显,也是秒级的

解决方案 »

  1.   

    问题没怎么看懂:1、”只是28万数据的一张表,竟然返回1000-3000个id也要十来秒“,这句话的意思是:28万记录的表单表查询返回1000~3000条记录的意思吗?每次都查询需要10来秒?2、另外,“但是从Oracle里大数据查找,还是很快的,只要返回的结果不是太大”,这句话到底什么意思?
      

  2.   

    依然看不懂你想表达什么?三张图怎么和你主题帖的问题对应?
    我也只能猜了:最后一张图,你查了30000多条记录出来,花费了7秒多,这个属于正常情况,前面都快,是因为你没有返回所有记录,只是返回了一页,在这种情况下,先不论显而易见的网络开销大幅度下降,在oracle内部都可能出现不一样的执行计划,导致出现不一样的性能。
      

  3.   

    PL/SQL Developer 这个工具,展示大量数据时,本身就很慢,但是这个不代表查询速度慢。最好在程序中跑一下,看看实际效果。  如果还是有明显的差异,再上来追问。
      

  4.   

    看你表的块数,是不是经常delete ,没有整理碎片
      

  5.   

    如果表的索引没有问题,可能是ORACLE服务器的网络或者磁盘读写能力有问题。
      

  6.   


    +1,PL/SQL Developer 这个工具显示时确实不咋地.用代码验证一下,query之后,直接看count.
      

  7.   

    跟数据库本身没关系了吧,plsql展示那么多数据的时候就是没那么快的