|
VIEW с вычислением
|
|||
---|---|---|---|
#18+
приветствую уважаемое сообщество. делаю БД типа касса взаимопомощи (или общий котел) Код: sql 1. 2.
задача - вычислить общую сумму взносов, среднее и дебет/кредит каждого юзера сделал VIEW Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
работает, но смущает что повторяются вычисления (select sum(pay) from pays) и sum(pays.pay). МОЖЕТ ЕСТЬ БОЛЕЕ РАЦИОНАЛЬНЫЙ МЕТОД? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 18:12 |
|
VIEW с вычислением
|
|||
---|---|---|---|
#18+
vict57, Плана "до"selectidorderfromdetail001SCAN TABLE pays010SEARCH TABLE users USING INTEGER PRIMARY KEY (rowid=?)000USE TEMP B-TREE FOR GROUP BY000EXECUTE SCALAR SUBQUERY 1100SCAN TABLE pays000EXECUTE SCALAR SUBQUERY 2200SCAN TABLE users000EXECUTE SCALAR SUBQUERY 3300SCAN TABLE pays План "после"selectidorderfromdetail100SCAN TABLE pays100USE TEMP B-TREE FOR GROUP BY100EXECUTE SCALAR SUBQUERY 2200SCAN TABLE pays001SCAN SUBQUERY 1 AS p010SEARCH TABLE users USING INTEGER PRIMARY KEY (rowid=?)000USE TEMP B-TREE FOR ORDER BY Сократилось на 1 скан таблицы pays, но появилась лишняя группировка. Надо смотреть на боевой базе, есть ли прогресс или регресс Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 22:17 |
|
VIEW с вычислением
|
|||
---|---|---|---|
#18+
VSVLAD, спасибо за инфу. у меня в SQL опыта мало, склоняюсь к мысли что БД лучше использовать чисто для поиска/хранения данных и фиксации изменений, а группировку и расчеты мне намного легче сделать в GUI клиента технически. или я не прав? и не могли бы вы сказать чем смотрите план запроса? я пользуюсь SQLiteStudio, там план запроса совсем по-другому выглядит ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2017, 15:08 |
|
VIEW с вычислением
|
|||
---|---|---|---|
#18+
с планом запроса разобрался: Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2017, 19:35 |
|
VIEW с вычислением
|
|||
---|---|---|---|
#18+
пошел другим путем делаю запрос Код: sql 1.
все необходимые вычисления делаю из этой таблицы на клиенте ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2017, 18:14 |
|
VIEW с вычислением
|
|||
---|---|---|---|
#18+
в продолжение темы - нагуглил что в SQLite вместо переменных можно применять временные таблицы запрос Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
будет ли этом метод менее ресурсоемким чем предыдущие? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2017, 19:45 |
|
VIEW с вычислением
|
|||
---|---|---|---|
#18+
vict57в продолжение темы - нагуглил что в SQLite вместо переменных можно применять временные таблицы запросВ данном случае - зря. Строку "итого" проще посчитать на клиенте, пока вытягиваешь данные по основному резалтсету. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2017, 00:03 |
|
VIEW с вычислением
|
|||
---|---|---|---|
#18+
White Owl, я пока не знаю, какой заказчик хочет клиент - Qt, Python или вебморду, оптимизирую скелет БД, поэтому все делаю запросами как вообще тестируются БД - я создал тестовую базу на 100 юзеров по 10 платежей и смотрю по времени выполнения запроса, может есть средства для анализа? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2017, 11:10 |
|
VIEW с вычислением
|
|||
---|---|---|---|
#18+
White Owl, Код: sql 1. 2. 3. 4. 5. 6. 7.
с учетом ваших замечаний если изменить структуру БД так? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2017, 08:55 |
|
VIEW с вычислением
|
|||
---|---|---|---|
#18+
vict57White Owl, я пока не знаю, какой заказчик хочет клиент - Qt, Python или вебморду, оптимизирую скелет БД, поэтому все делаю запросами как вообще тестируются БД - я создал тестовую базу на 100 юзеров по 10 платежей и смотрю по времени выполнения запроса, может есть средства для анализа?Да какой бы клиент ни был. "Итого" все равно проще на нем считать. К тому-же, если заказчик забыл сказать будет ли это десктопный клиент или веб клиент. Ты уверн что с этим заказчиком стоит работать? И как можна забыть об этом спросить? Первый же вопрос заказчику: "чего вы хотите?" ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2017, 18:10 |
|
VIEW с вычислением
|
|||
---|---|---|---|
#18+
vict57White Owl, Код: sql 1. 2. 3. 4. 5. 6. 7.
с учетом ваших замечаний если изменить структуру БД так?А это зачем??? Чем простые внешние ключи не устраивают? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2017, 18:11 |
|
VIEW с вычислением
|
|||
---|---|---|---|
#18+
White Owl, работа как бы некоммерческая - я помогаю в школе вести комп класс преподу. дети решили скидываться кто сколько может и копить на всякие ардуины и т.п. препод хочет увлеченных развести на создание проги для учета взносов, а я изучаю SQLite чтобы дать задел. в программировании опыт есть, а БД плотно не занимался, поэтому извиняйте за глупые вопросы. до внешних ключей я еще не дочитал наверное. Сама идея создание первичного текстового ключа имеет смысл? имхо если да то можно одним запросом обойтись Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2017, 17:36 |
|
VIEW с вычислением
|
|||
---|---|---|---|
#18+
vict57White Owl, работа как бы некоммерческая - я помогаю в школе вести комп класс преподу. дети решили скидываться кто сколько может и копить на всякие ардуины и т.п. препод хочет увлеченных развести на создание проги для учета взносов, а я изучаю SQLite чтобы дать задел. в программировании опыт есть, а БД плотно не занимался, поэтому извиняйте за глупые вопросы. Вообще-то, разработка начинается с хотелки: "хочу чтобы на экране было это, и оно делало то-то". Из этого решается какая будет общая архитектура продукта (десктоп приложение, клиент-сервер с тонким или толстым клиентом, или вообще что-то узкоспециализированное). Для учета платежей вам хватит экселевского листа. Полноценная СУБД там не нужна. Если делать это на основе ардуино, то это уже что-то граничащее с собственным платежным терминалом получится. Задачка вполне себе ученическая, но все-же уровня института. vict57Сама идея создание первичного текстового ключа имеет смысл? Да, конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2017, 18:46 |
|
VIEW с вычислением
|
|||
---|---|---|---|
#18+
White Owl, технически я такую работу напишу на C++/Qt без напряга за день примерно и без баз данных совсем, но для детей на данном этапе это будет сложно - отобьет все желание к программированию. задача - научить детей создавать свое что-то , а не учить их пользоваться Excel. sorry за оффтоп ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2017, 19:14 |
|
|
start [/forum/topic.php?fid=54&msg=39507753&tid=2008487]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 249ms |
total: | 379ms |
0 / 0 |