我有一个数据库A
,它通过数据库链接连接到另一个数据库B
。
当我在数据库select count(*) from VIEW
上执行A
时(VIEW
从数据库B
读取数据),需要大约60秒。
所有后续运行需要约1秒钟。 在与我的sql开发人员断开连接并重新连接后,select仍然需要大约1秒钟。
你有什么想法吗?
答案 0 :(得分:1)
我的猜测是,在查询视图后,视图上的表的数据可能会缓存在DB2 SGA上。断开您的Sql Developer是很重要的,因为数据是在实例级别缓存而不是在您的客户端上。 如果实例B重新启动或数据从DB Buffer Cache老化,它可能会再次进入磁盘并开始变慢。
答案 1 :(得分:0)
Oracle首先为每个查询创建执行计划。可能是您的视图很复杂,并且其执行计划的创建在首次执行时需要更多时间。因为其执行计划存在于共享池中,所以它运行得很快。