Найти - Пользователи
Полная версия: SQLite. Помогите грамотно сформировать сводную таблицу.
Начало » Базы данных » SQLite. Помогите грамотно сформировать сводную таблицу.
1
Pluto
Таблица:
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)
    ...
На самом деле формирование SQLtext ещё более заковыристое, там не один mylist, и не один вложенный цикл, но это не важно.

У меня получается, что на каждый cursor.execute каждый раз делается сперва выборка для myView, которая тащит данные из большой таблицы MainTable, потом из неё выбираются записи по полю code.
В итоге другая моя программа на допотопном FoxPro для DOS делающая то же самое работает несравнимо быстрее.
Может как-то сделать так, чтобы myView была сформирована один раз как отдельная таблица и все последующие запросы шли уже к ней?

Или вообще я как-то не так пытаюсь делать свою сводную табличку?

4kpt_II
Очень Вас жалко. Вам реально нечем заняться. Возьмите алхимию и прекратите своим мучения раз и навсегда
Pluto
Прежде чем что-то написать, стоило бы немножко подумать, как ваши слова могут быть восприняты.
Мне очень есть чем заняться, поэтому в данный момент нет времени на изучение алхимии.

По существу вопроса можете что-то сказать?
ilnur
Pluto
что на каждый cursor.execute каждый раз делается сперва выборка для myView,
может у вас в коде так и прописано все? может код внимательней посмотреть
Pluto
Создал временную таблицу вместо представления myView и скорость возросла многократно!
http://www.sqlite.org/lang_createtable.html
4kpt_II
Я всегда думаю, прежде чем написать.
Тут как в мультфильме. “Лучше час потратить, потом за 5 минут долететь”
Если для Вас почитать 1-2 статьи по этому ОРМ - неподъемная задача, тогда мучайтесь дальше.

P.S. Читал все Ваши последние вопросы по БД. Все они решаются алхимией на ура. О чем я уже неоднократно Вам писал. Нравится заниматься тантрическим сексом и уйма времени на разгадывания задач, которые Вы себе назадавали (видно по постам) - я Вам мешать не буду
Pluto
4kpt_II
Я всегда думаю, прежде чем написать.
Мне так не кажется.
Совет про Алхимию - это дельный совет, но на тот момент времени не применимый.
Заявление, что мне, заваленному работой, нечем заняться - скажем так, недалёкое заявление.
4kpt_II
Да Вы уже времени на разгадывание загадок потратили больше, чем потратили бы на алхимию. Причем потратили больше в разы. Да и решения получили далеко не универсальные… Поэтому и напрашивается такое замечание.

P.S. Я пас. Не буду ничего Вам доказывать и разубеждать. Удачи
py.user.next
Pluto
На самом деле формирование SQLtext ещё более заковыристое, там не один mylist, и не один вложенный цикл, но это не важно.
составь команду вручную и проверь её скорость
Pluto
py.user.next
составь команду вручную и проверь её скорость
Всё уже решено.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB