是什么导致SQL equerry在相同软件和硬件的不同Oracle机器上运行更长的时间?

时间:2019-06-20 14:48:48

标签: sql oracle oracle11g configuration

我正在使用PL SQL过程将数据从4台服务器聚合到一个位置,并且它在其中一台服务器上的性能明显较低。 我有一个相对简单的查询,可以汇总审核日志中的数据:

索引还可以,第四台服务器上的行量更大,但不会造成这种差异,相同的硬件,相同的linux,相同的oracle版本(Oracle 11.2.0.4.0),表和索引的相同结构。索引可用,相同的分区。

INSERT INTO app_stats_agg_hourly(SHIPMENTS,event_datetime,COUNTRY,data_type,event_type,collection_time,INSTANCE)

    SELECT COUNT(*) as SHIPMENTS, TRUNC(event_datetime,'HH24') as event_datetime,COUNTRY,data_type,event_type,load_run_start,v_region
    FROM APP_AUDIT
    WHERE   
            event_type in ('FromApp','ToError','ToApp','Generate','FromCorr')
        and  event_datetime > last_collection
        and  event_datetime <=  last_event

    GROUP BY TRUNC(event_datetime,'HH24'),COUNTRY,data_type,event_type;

它运作良好且完全符合预期。 last_collectionlast_event变量在此过程之前进行了初始化。 该代码在4台服务器中的3台服务器上运行一两分钟,在第四台服务器上运行半小时。

经过长期调查,我发现我使用的变量是TIMESTAMPS,而event_datetime列是date。如果我使用日期,它就像一种魅力。我的问题是-是什么导致此方法与众不同?

0 个答案:

没有答案