• Some things to try -

    If there is no possibility that the two queries (either side of the union) can return duplicates you could make it "union all" which may save a little time.

    Apart from that check if the time is in the selects (run them independantly) or the insert.

    If the selects - look at indexes on the source tables

    If the insert - look at basics like disc config, log on different disc to data, log NOT on raid 5 etc etc.

    Mike John