|
процедура для удаления записей из 2 таблиц
|
|||
---|---|---|---|
#18+
Здравствуйте! нужна помощь: есть бд на Interbase 2009. Задача: удалить старые записи из таблиц прихода(tIncome) и реализации(tOutcome). сначала надо удалить те записи из таблицы реализации, которые оприходованы до 01.01.2018 и в этот момент был польностю реализован (условия: i.indate<'01/01/2018' and i.qnt-sum(o.qnt)<0.001). А потом уже надо удалить записи из таблицы прихода. Код: css 1. 2.
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
процедура неправильно работает- польностю очишает таблицу реализации. В delphi цикл правильно работает но ооочень медленно: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 17:57 |
|
процедура для удаления записей из 2 таблиц
|
|||
---|---|---|---|
#18+
bastibubu, дык это. раз процедура, то почему бы не for select i.in_id ... do delete from tOutcome where i.in_id = ... ? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 18:32 |
|
процедура для удаления записей из 2 таблиц
|
|||
---|---|---|---|
#18+
А cur_qnt у тебя случайно не "нереализованный остаток"? Тогда всё сводится к простому Код: sql 1. 2. 3. 4. 5.
Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 18:37 |
|
процедура для удаления записей из 2 таблиц
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov А cur_qnt у тебя случайно не "нереализованный остаток"? Dimitry Sibiryakov , это текущий остаток(current quantity). Я не знаю остатки на 01/01/2018, в бд (tIncome) хранится только текущие остатки, поэтому чтобы получить остатки на 01/01/2018 пишу условие i.qnt-sum(o.qnt)<0.001. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 18:53 |
|
процедура для удаления записей из 2 таблиц
|
|||
---|---|---|---|
#18+
bastibubuэто текущий остаток(current quantity). Вот и отличненько. Используй его. Иначе ненароком грохнешь приход, который на складе залежался с 18-го года и тебе будет больно после ревизии. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 18:55 |
|
процедура для удаления записей из 2 таблиц
|
|||
---|---|---|---|
#18+
kdv, Dimitry Sibiryakov я неправильно сформулировал вопрос: надо узнать когда из конкретной партии последный товарь продали, было это до 01.01.18 или после, если до -тогда удаляю из бд и приход и расход а если после- тогда надо оставить в базе. т.е. надо узнать был остаток в этот день или нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 22:14 |
|
процедура для удаления записей из 2 таблиц
|
|||
---|---|---|---|
#18+
Код: sql 1.
Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 23:16 |
|
процедура для удаления записей из 2 таблиц
|
|||
---|---|---|---|
#18+
Вот что смог написать Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
но условие Код: plsql 1.
неправильно работает. Возвращает все записи, и те которые продались после 01.01.18 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2021, 03:03 |
|
процедура для удаления записей из 2 таблиц
|
|||
---|---|---|---|
#18+
тело процедуры возвращает эти записи (без distinct). ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2021, 03:08 |
|
процедура для удаления записей из 2 таблиц
|
|||
---|---|---|---|
#18+
а с distinct-ом вот это. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2021, 03:13 |
|
процедура для удаления записей из 2 таблиц
|
|||
---|---|---|---|
#18+
bastibubu, Если правильно понял то вариант 1 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
вариант 2 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2021, 05:18 |
|
процедура для удаления записей из 2 таблиц
|
|||
---|---|---|---|
#18+
М.б. исправить запрос так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2021, 09:03 |
|
процедура для удаления записей из 2 таблиц
|
|||
---|---|---|---|
#18+
m7m , установил допольнительное условие where recs_k<5000 и всеравно очень долго работал(15мин), потом отключил. Может быть и зацикливается. В Tincome около 500 000 рекордов, а в Noutcome около 3млн. :( ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2021, 15:17 |
|
процедура для удаления записей из 2 таблиц
|
|||
---|---|---|---|
#18+
Ну и забей, БД нужна чтобы данные хранить, вот пусть и хранит. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2021, 15:23 |
|
процедура для удаления записей из 2 таблиц
|
|||
---|---|---|---|
#18+
bastibubu m7m , установил допольнительное условие where recs_k<5000 и всеравно очень долго работал(15мин), потом отключил. Может быть и зацикливается. В Tincome около 500 000 рекордов, а в Noutcome около 3млн. :( Ну кто-ж его знает что там у тебя 500 000, 3 000 000 - это не так уж и много Для того чтобы что-то сказать нужны как минимум планы запросов зы. Зациклиться ни первый ни второй вариант не может в принципе ззы. Для того чтобы дождаться и проанализировать что-же делается на самом деле, достаточно во втором варианте ограничить количество рассматриваемых вариантов ну например первой сотней Код: sql 1.
что касается первого варианта то там хуже ибо ограничить то можно однако оно подействует только после выполнения всей группировки, ну и посколько у меня подозрение на то что эта группировка очень долго выполняется то как по мне это ограничение будет почти бесполезно ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2021, 16:46 |
|
процедура для удаления записей из 2 таблиц
|
|||
---|---|---|---|
#18+
m7m, второй вариант: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
в таблице Toutcome самый первый запись надо удалить. Лимит (rows 10). если лимит rows=50 процедура работает около 5мин, а если rows=500- ооочень долго. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2021, 18:35 |
|
процедура для удаления записей из 2 таблиц
|
|||
---|---|---|---|
#18+
plans ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2021, 18:43 |
|
процедура для удаления записей из 2 таблиц
|
|||
---|---|---|---|
#18+
bastibubu, индексов совсем нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2021, 18:53 |
|
процедура для удаления записей из 2 таблиц
|
|||
---|---|---|---|
#18+
bastibubu, Как минимум в tInCome добавт индекс по indate tOutcome добавь индекс по in_id зы. Код: sql 1. 2. 3. 4. 5. 6.
и когда в условии при проверке даты с константой лучше явно указывать что это дата ибо при where i.indate < '01/01/2018' получишь неожиданный для себя результат т.к. в данном случае indate преобразуется в строку и будет сравнение строк Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
ззы. И таки планы и запросы лучше текстом а не картинками ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2021, 09:44 |
|
процедура для удаления записей из 2 таблиц
|
|||
---|---|---|---|
#18+
kdv, m7m без индексов пришлось бы серверу работать около 30 часов. Эффект индексов удивительный- время сократилось до 2.5 минут!!! большое вам спасибо!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2021, 14:34 |
|
процедура для удаления записей из 2 таблиц
|
|||
---|---|---|---|
#18+
m7m bastibubu, и когда в условии при проверке даты с константой лучше явно указывать что это дата ибо при where i.indate < '01/01/2018' получишь неожиданный для себя результат т.к. в данном случае indate преобразуется в строку и будет сравнение строк даже без этого всё обошлось! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2021, 14:38 |
|
процедура для удаления записей из 2 таблиц
|
|||
---|---|---|---|
#18+
Ещё один чайник, пытающийся удалять данные из тормозящей БД вместо оптимизации запросов. Печально я гляжу на это поколенье... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2021, 14:44 |
|
процедура для удаления записей из 2 таблиц
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Вот пооптимизирует удаление, а там глядишь и до оптимизиции запросов дойдет, и будет оно летать ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2021, 15:07 |
|
процедура для удаления записей из 2 таблиц
|
|||
---|---|---|---|
#18+
bastibubu даже без этого всё обошлось! Если ты про это Код: sql 1. 2. 3.
то тут оно и не нужно а если про это Код: sql 1. 2. 3.
то сомневаюсь ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2021, 15:10 |
|
|
start [/forum/topic.php?fid=40&msg=40034771&tid=1560157]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
144ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 237ms |
total: | 487ms |
0 / 0 |