Как быстро сравнить огромные списки словарей?
Отсортировать оба массива, сравнивая по column1, column2, column3
(функция сравнения сначала сравнивает строки из column1, при их равенстве - column2, и т.д.)
дальше можно будет за линейное время сделать сравнение, обходя параллельно оба массива.
from collections import defaultdict

a = [{'a': '1', 'b': '2'},
     {'a': '1', 'b': '2'},
     {'a': '5', 'b': '7'}]
b = [{'a': '3', 'b': '4'},
     {'a': '1', 'b': '2'}]


def make_hash_table(list_of_dicts):
    hashes = defaultdict(list)

    for i, item in enumerate(list_of_dicts):
        calculated_hash = hash(frozenset(item.items()))
        hashes[calculated_hash].append(i)

    return hashes


# Считаем хеши
a_hashes = make_hash_table(a)

b_hashes = make_hash_table(b)

# Определяем через вычитание множеств каких хешей у нас нет

not_in_a = [b[b_hashes[hash_value][0]] for hash_value in b_hashes.keys() - a_hashes.keys()]

not_in_b = [a[a_hashes[hash_value][0]] for hash_value in a_hashes.keys() - b_hashes.keys()]

print('Not in a \n')
print(not_in_a)
print()
print('Not in b \n')
print(not_in_b)

OUT

Not in a 

[{'a': '3', 'b': '4'}]

Not in b 

[{'a': '5', 'b': '7'}]