ayb
Вот тут все ограничения. Максимальный размер файла базы - 140 терабайт.
Делал выборки из базы данных в 1200000 строк и шесть столбцов но выборки при помощи конструкции
import sqlite3
import datetime
dt = datetime.datetime.now()
dat = dt.strftime('%Y %m %d')# дата выборки
timot = '00 00 00'# время выборки от
timdo = '00 59 00'# время выборки до
vv1 = 0
vv2 = 0
vv3 = 0
#data = dt.strftime('%Y %m %d')#текущая дата
#time1 = dt.strftime('%H %M %S')#текущее время
conn = sqlite3.connect('tutorial3.db')
#conn = sqlite3.connect(':memory:')
c = conn.cursor()
#conn.execute("create table if not exists person(data, time1, bunker, time2, status, ves)")
# проверка кол - ва итераций
i1 = 0
i2 = 0
i3 = 0
# проверка времени выполнения выборки
dt = datetime.datetime.now()
timedo = dt.strftime('%H %M %S')#текущее время до выборки
c.execute('select * from person order by time1')
for row in c:
# print ('-'*10)
# print ('ID:', row[2],' ',row[5])
if row[2]==1 and timot<=row[1]<=timdo:
vv1 = vv1 + row[5]
i1=i1+1
if row[2]==2 and timot<=row[1]<=timdo:
vv2 = vv2 + row[5]
i2=i2+1
if row[2]==3 and timot<=row[1]<=timdo:
vv3 = vv3 + row[5]
i3=i3+1
# print ('First name:', row[1])
# print ('Second name:', row[2])
# print ('-'*10)
# print ('co:', row[0])
c.close()
# проверка времени выполнения выборки
dt = datetime.datetime.now()
timeposle = dt.strftime('%H %M %S')#текущее время после выборки
print ('I = ',i1,' sum1 =',vv1)
print ('I = ',i2,' sum2 =',vv2)
print ('I = ',i3,' sum3 =',vv3)
print ('время до =',timedo)
print ('время после =',timeposle)
База на данный момент имеет 57 Мегабайт.
Т.е. мне нужно на самом деле обработать кусок таблицы с одного времени до другого.. и в этом куске сделать определенные операции, в данном случае суммирование.. А обраратывается весь массив и по условию проходит только часть таблицы , при том по факту это 5% максимум от всех строк… а то и 1 % .
Как сделать выборку данных локаничнее чтоб меньше времени занимала?
а то 10 секунд… это многовато…