Я хочу выполнить различный запрос на выборку 100 миллионов раз, и у меня есть aprox. 1 миллион строк в таблице. Поэтому я ищу самый быстрый способ для выполнения всех этих запросов выбора.
До сих пор я пробовал три разных метода, и результаты были похожи.
Следующие три метода, конечно, не делают ничего полезного, но предназначены исключительно для сравнения производительности.
Первый метод:
for i in range (100000000):
cur.execute("select id from testTable where name = 'aaa';")
второй метод:
cur.execute("""PREPARE selectPlan AS
SELECT id FROM testTable WHERE name = 'aaa' ;""")
for i in range (10000000):
cur.execute("""EXECUTE selectPlan ;""")
третий метод:
def _data(n):
cur = conn.cursor()
for i in range (n):
yield (i, 'test')
sql = """SELECT id FROM testTable WHERE name = 'aaa' ;"""
cur.executemany(sql, _data(10000000))
And the table is created like this:
cur.execute("""CREATE TABLE testTable ( id int, name varchar(1000) );""")
cur.execute("""CREATE INDEX indx_testTable ON testTable(name)""")
Я думал, что использование функциональности подготовленного оператора действительно ускорит запросы, но, похоже, этого не произойдет, я подумал, что вы могли бы дать мне подсказку о других способах сделать это.