У меня есть 8 таблиц, каждая из которых содержит около 4 миллионов строк в одном и том же диапазоне дат и времени.Я пытаюсь написать метод, который можно использовать в цикле for, чтобы получить данные для «текущей минуты» из каждой таблицы, что-то сделать с этими данными, затем получить данные за следующую минуту и т. Д.
Я попробовал это сначала:
def get_data(self,table_name,time):
self.c.execute('SELECT * FROM "{}" WHERE time="{}"'.format(table_name,time))
resp = self.c.fetchall()
return resp
Это было слишком медленно, поэтому я попробовал это:
def get_data(self,table_name,time):
self.c.execute('SELECT * FROM "{}"'.format(table_name))
for row in self.c:
if row[0] == time:
return [row[0],row[4],row[8]]
Сначала это быстрее, но занимает больше времени, так какуглубляется в таблицу.
Конечная цель выглядит примерно так:
now = start_time
data = {}
while True:
for table in table_list:
data[table] = get_data(table,now)
# do something with data
now = add_minute(now)
if now = end_time:
break
else:
continue
Есть ли способ быстро найти строку со временем, которое я ищу в каждой таблице, ивернуть их мне, или мне нужно найти другое решение?