Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 16, 2014 19:08:44

Pluto
Зарегистрирован: 2012-05-29
Сообщения: 177
Репутация: +  2  -
Профиль   Отправить e-mail  

SQLite. Помогите грамотно сформировать сводную таблицу.

Таблица:
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 была сформирована один раз как отдельная таблица и все последующие запросы шли уже к ней?

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

Офлайн

#2 Апрель 16, 2014 21:16:25

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

SQLite. Помогите грамотно сформировать сводную таблицу.

Очень Вас жалко. Вам реально нечем заняться. Возьмите алхимию и прекратите своим мучения раз и навсегда

Офлайн

#3 Апрель 17, 2014 05:42:02

Pluto
Зарегистрирован: 2012-05-29
Сообщения: 177
Репутация: +  2  -
Профиль   Отправить e-mail  

SQLite. Помогите грамотно сформировать сводную таблицу.

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

По существу вопроса можете что-то сказать?

Офлайн

#4 Апрель 17, 2014 06:42:07

ilnur
От: Казань
Зарегистрирован: 2009-01-06
Сообщения: 524
Репутация: +  22  -
Профиль   Отправить e-mail  

SQLite. Помогите грамотно сформировать сводную таблицу.

Pluto
что на каждый cursor.execute каждый раз делается сперва выборка для myView,
может у вас в коде так и прописано все? может код внимательней посмотреть

Офлайн

#5 Апрель 17, 2014 07:38:46

Pluto
Зарегистрирован: 2012-05-29
Сообщения: 177
Репутация: +  2  -
Профиль   Отправить e-mail  

SQLite. Помогите грамотно сформировать сводную таблицу.

Создал временную таблицу вместо представления myView и скорость возросла многократно!
http://www.sqlite.org/lang_createtable.html

Офлайн

#6 Апрель 17, 2014 08:00:31

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

SQLite. Помогите грамотно сформировать сводную таблицу.

Я всегда думаю, прежде чем написать.
Тут как в мультфильме. “Лучше час потратить, потом за 5 минут долететь”
Если для Вас почитать 1-2 статьи по этому ОРМ - неподъемная задача, тогда мучайтесь дальше.

P.S. Читал все Ваши последние вопросы по БД. Все они решаются алхимией на ура. О чем я уже неоднократно Вам писал. Нравится заниматься тантрическим сексом и уйма времени на разгадывания задач, которые Вы себе назадавали (видно по постам) - я Вам мешать не буду

Офлайн

#7 Апрель 18, 2014 08:41:18

Pluto
Зарегистрирован: 2012-05-29
Сообщения: 177
Репутация: +  2  -
Профиль   Отправить e-mail  

SQLite. Помогите грамотно сформировать сводную таблицу.

4kpt_II
Я всегда думаю, прежде чем написать.
Мне так не кажется.
Совет про Алхимию - это дельный совет, но на тот момент времени не применимый.
Заявление, что мне, заваленному работой, нечем заняться - скажем так, недалёкое заявление.

Офлайн

#8 Апрель 18, 2014 15:12:16

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

SQLite. Помогите грамотно сформировать сводную таблицу.

Да Вы уже времени на разгадывание загадок потратили больше, чем потратили бы на алхимию. Причем потратили больше в разы. Да и решения получили далеко не универсальные… Поэтому и напрашивается такое замечание.

P.S. Я пас. Не буду ничего Вам доказывать и разубеждать. Удачи

Отредактировано 4kpt_II (Апрель 18, 2014 15:14:12)

Офлайн

#9 Апрель 19, 2014 23:33:41

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9811
Репутация: +  852  -
Профиль   Отправить e-mail  

SQLite. Помогите грамотно сформировать сводную таблицу.

Pluto
На самом деле формирование SQLtext ещё более заковыристое, там не один mylist, и не один вложенный цикл, но это не важно.
составь команду вручную и проверь её скорость



Офлайн

#10 Апрель 21, 2014 13:23:47

Pluto
Зарегистрирован: 2012-05-29
Сообщения: 177
Репутация: +  2  -
Профиль   Отправить e-mail  

SQLite. Помогите грамотно сформировать сводную таблицу.

py.user.next
составь команду вручную и проверь её скорость
Всё уже решено.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version