Prøv dette:
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)
Send sql-kommandoen kun én gang for alle rækkerne. Ud over ydelsesomkostningerne ved at udstede yderligere sql-kommandoer, skal du bemærke, at størrelsen af selve sql-strengen (i bytes) sandsynligvis dværger størrelsen af de reelle data, der testes.
Brug af id2 som en generator uden arrayet bør også undgå at indlæse hele datasættet i hukommelsen.