• there are many causes for performance. but it's good to post little bit more details about this.

    Like, do you have created index on some column if yes which type, do you use somewhere have transaction where this tables is used,

    i don't know, try this

    select T2.COL1, T2.COL2, T1.COL1, T1.COL2, T1.COL3,

    CAST(T2.COL1 as VARCHAR)+'-'+CAST(T2.COL2 as VARCHAR)+'-'+CAST(T1.COL1 as VARCHAR)+'-'+CAST(T1.COL2 as VARCHAR) tmpColumn into #temp

    from T1 (nolock) join T2 (nolock) on T1.COL4 = T2.COL3

    where T2.COL4 != 'data1'

    and T1.COL1 is not NULL

    and T1.COL5 is not NULL

    and T1.COL6 = 'data2'

    insert into T3

    select * from #temp where tmpColumn not in

    (select CAST(COL1 as VARCHAR)+'-'+CAST(COL2 as VARCHAR)+'-'+CAST(COL3 as VARCHAR)+'-'+CAST(COL4 as VARCHAR) from T3)