MainTable
id, fam, im, ot, money, code, type, mark, dateOfday, fieldN1, fielsN2, fieldN3… fieldNN
Для начала я создал представление, которое выбирает только те поля, которые нужны для сводной таблицы, а также попадают в нужный диапазон дат
CREATE VIEW myView AS SELECT id, money, code, type, mark FROM MyTable WHERE date dateOfday >= “2014-01-01” and dateOfday <= “2014-12-12”
Затем начинается выборка из
mylist = [ [12, 45], [34, 67, 89], [90, 22, 55, 67]... ] for i mylist: spisok = "(" for ii in i: spisok = spisok + "code = " + ii + " OR " spisok = spisok[0:len(spisok)-4] + ")" SQLtext = "SELECT sum(money) FROM myView WHERE " + spisok cursor.execute(SQLtext) ...
У меня получается, что на каждый cursor.execute каждый раз делается сперва выборка для myView, которая тащит данные из большой таблицы MainTable, потом из неё выбираются записи по полю code.
В итоге другая моя программа на допотопном FoxPro для DOS делающая то же самое работает несравнимо быстрее.
Может как-то сделать так, чтобы myView была сформирована один раз как отдельная таблица и все последующие запросы шли уже к ней?
Или вообще я как-то не так пытаюсь делать свою сводную табличку?