Zkuste toto:
id2 = csv.reader(open(os.path.join(perf_dir,id_files[1])))
h = tuple(next(id2))
create = '''CREATE TABLE id2 (%s varchar, %s int PRIMARY KEY, %s int)''' % h
insert = '''INSERT INTO id2 (%s, %s, %s) VALUES (%%s, %%s, %%s)''' % h
...
cr.executemany(insert, id2)
Předejte příkaz sql pouze jednou pro všechny řádky. Kromě režie výkonu při vydávání dalších příkazů SQL si všimněte, že velikost samotného řetězce SQL (v bajtech) pravděpodobně převyšuje velikost skutečných testovaných dat.
Použití id2 jako generátoru bez pole by také mělo zabránit načtení celé datové sady do paměti.