|
организация удаления
|
|||
---|---|---|---|
#18+
Добрый всем праздничный первомайский вечер! Подскажите, как правильно организовать удаление записей в приложении. Есть форма с гридом, источник локалвью. Пользователь работает с данными, в частности удаляет строки, в таблице строки помечаются и накапливаются. Можно использовать служебную форму, не доступную пользователю, и находить время и возможность почистить таблицу командой PACK, но это не кажется изящным решением. Может как-то можно задействовать удаленные строки, что бы туда записывать данные в дальнейшем? Так, что бы накопления помеченных записей в товарных количествах просто не происходила, а при создании новых записей они задействовались. Кто-то же решал такую проблему наверное, может поделитесь советом. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2020, 19:57 |
|
организация удаления
|
|||
---|---|---|---|
#18+
Ничего не понял. Если надо повторно использовать помеченную на удаление запись то RECALL Но сам факт такой необходимости говорит о том что есть проблемы в архитектуре БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2020, 21:13 |
|
организация удаления
|
|||
---|---|---|---|
#18+
Dima T, Это не связано с архитектурой. Записи помечаются на удаление в ходе работы пользователя - например, отменили часть ранее сделанного заказа и вместо 10-ти записей осталось 7, три остались в таблице помеченными на удаление. Со временем таких набегает, не то, что бы много, но есть. Вот и подумал, может как-то организовать, что бы их задействовать. Так, что бы в принципе не возникал вопрос физического удаления когда-либо. Пока думаю так, в процедуре сохранения для удаленных записей делать blank for deleted() , при создании нового заказа их по пустому полю находить и recall и переписывать. Но еще не воплотил. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2020, 21:21 |
|
организация удаления
|
|||
---|---|---|---|
#18+
DmitryKn Пока думаю так, в процедуре сохранения для удаленных записей делать blank for deleted() , при создании нового заказа их по пустому полю находить и recall и переписывать. Но еще не воплотил. 1. Судя по предложенному алгоритму в БД отсутствует FK/RI. 2. Не надо придумывать велосипед, "чистка" удаленных записей обычно делается в административной процедуре, да и в большинстве случаев это не требуется. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2020, 07:25 |
|
организация удаления
|
|||
---|---|---|---|
#18+
PaulWist, добрый день, что такое FK/RI ? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2020, 08:50 |
|
организация удаления
|
|||
---|---|---|---|
#18+
PaulWist, 1. Прошу извинить, если не прав, но может имеется в виду Foreign Key и Referential Integrity ? От Relation между таблицами отказался, внешние ключи используются. 2. Может вы и правы, но разве это не будет улучшением - усовершенствованием приложения, если требующих "чистки" помеченных на удаление записей накапливаться в принципе не будет никогда и административная процедура не понадобится тоже никогда? Это не критично все, конечно, просто хотел услышать мнение, надо оно такое, не надо, я ведь только учусь, опытом не обладаю, профильным образованием тоже, пилю себе один свой собственный проект и постигаю мудрость, в том числе с вашей помощью. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2020, 09:40 |
|
организация удаления
|
|||
---|---|---|---|
#18+
DmitryKn и административная процедура не понадобится тоже никогда? Понадобится по другим причинам. При интенсивном изменении индексы вырождаются и поиск начинает работать медленнее, не говоря о том что некорректное завершение (выключение света, снятие задачи, сбой сети и т.д.) может разрушить индекс, поэтому требуется регулярно удалять индексы и создавать заново, а добавление сюда PACK не особо помешает. Да и производительность сильно просядет если сначала искать помеченную на удаление запись, а если нет - добавлять. Просто добавлять - быстрее. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2020, 10:17 |
|
организация удаления
|
|||
---|---|---|---|
#18+
Dima T, Основная идея понятна, спасибо ) На счет индексов хотя бы кратко - каков алгоритм переиндексации ? И в моем случае: есть поле id I (autoincrement), он же primary key, и есть ключи внешние, regular. Составных нет, просто не умею ими пользоваться, а потому и не вижу куда и как применить. Relation нет. Записей до 200 000 . Надо ли тут переиндексацию затевать, да и как это возможно? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2020, 13:29 |
|
организация удаления
|
|||
---|---|---|---|
#18+
DmitryKn На счет индексов хотя бы кратко - каков алгоритм переиндексации ? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
DmitryKn И в моем случае: есть поле id I (autoincrement), он же primary key, и есть ключи внешние, regular. Составных нет, просто не умею ими пользоваться, а потому и не вижу куда и как применить. Relation нет. Записей до 200 000 . Надо ли тут переиндексацию затевать, да и как это возможно? Индексы для другого нужны, они ускоряют поиск нужных записей, гугли rushmore и про sys(3054) почитай ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2020, 14:28 |
|
организация удаления
|
|||
---|---|---|---|
#18+
Dima T, посмотрю, спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2020, 15:06 |
|
организация удаления
|
|||
---|---|---|---|
#18+
В общем случае, использование Recall - не желательно. Это, скорее, инструмент разработки и отладки. А вот в готовом приложении использовать не стоит. Возникает ряд проблем Удаление записей в таблице ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2020, 16:35 |
|
организация удаления
|
|||
---|---|---|---|
#18+
ВладимирМ, большое спасибо за ссылку. Уже иду правильным путем ) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2020, 20:00 |
|
организация удаления
|
|||
---|---|---|---|
#18+
DmitryKn, Как вариант использовать индекс, например INDEX ON IIF(DELETED() OR EMPTY(sk_id),"F","T")+STR(sk_id,7) TAG sk_id ADDITIVE далее при просмотре таблицы SET KEY TO "T" будут отображаться только не удалённые записи.. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2020, 07:01 |
|
организация удаления
|
|||
---|---|---|---|
#18+
Доброго всем времени! Удаляю помеченные записи: Код: sql 1. 2. 3.
И ничего не происходит, все помеченные записи на месте. Что-то еще надо PACKy ? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2021, 12:44 |
|
организация удаления
|
|||
---|---|---|---|
#18+
из командного окна тоже не работает ( ... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2021, 13:06 |
|
организация удаления
|
|||
---|---|---|---|
#18+
Помеченные не в базе, а в конкретной таблице надо удалять Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2021, 14:58 |
|
организация удаления
|
|||
---|---|---|---|
#18+
Dima T, Спасибо за ответ, да еще и в праздник. Да, по таблицам пакует, я просто думал pack database сразу все помеченные записи во всех таблицах базы уберет, что бы не перебирать таблицы. Не прошла халтурка )) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2021, 16:03 |
|
организация удаления
|
|||
---|---|---|---|
#18+
Dima T, Получилось такое: Код: 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.
Насколько здесь уместен будет reindex и вообще, может методологические ошибки есть? Так-то вроде работает ... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2021, 17:41 |
|
организация удаления
|
|||
---|---|---|---|
#18+
DmitryKn Dima T, Спасибо за ответ, да еще и в праздник. Да, по таблицам пакует, я просто думал pack database сразу все помеченные записи во всех таблицах базы уберет, что бы не перебирать таблицы. Не прошла халтурка )) pack database пакует контейнер БД, который тоже таблица. DmitryKn Dima T, Получилось такое: Код: 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.
Насколько здесь уместен будет reindex и вообще, может методологические ошибки есть? Так-то вроде работает Желтым лишнее выделил. Можно выкинуть. При наличии помеченных на удаление внутри PACK выполняется REINDEX, но REINDEX не всегда спасает, надежнее удалять индексы и заново создавать, выше писал 22126645 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2021, 18:45 |
|
организация удаления
|
|||
---|---|---|---|
#18+
Dima T, Огромное спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2021, 19:24 |
|
организация удаления
|
|||
---|---|---|---|
#18+
Dima T Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Доброго времени, это индексы те же самые индексы, что указываются в конструкторе таблиц при создании таблицы? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2021, 20:49 |
|
организация удаления
|
|||
---|---|---|---|
#18+
Dima T, а с теми, которые primary, не будет ли каких осложнений? В хэлпе сказано, что мы примари не можем задать: "Вы не можете создать первичный (primary) индекс командой INDEX..." Мы ведь delete tag all , значит и примари тоже? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2021, 11:47 |
|
организация удаления
|
|||
---|---|---|---|
#18+
Не знаю, хэлп надо смотреть. Я использую только обычные индексы. PS Всякие связи, средства контроля целостности и т.п. тоже не использую. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2021, 12:35 |
|
организация удаления
|
|||
---|---|---|---|
#18+
Dima T Не знаю, хэлп надо смотреть. Я использую только обычные индексы. PS Всякие связи, средства контроля целостности и т.п. тоже не использую. Это я тоже не использую, но примари индексы есть, на автоинкрементных полях. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2021, 13:01 |
|
|
start [/forum/topic.php?fid=41&tid=1581414]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
others: | 236ms |
total: | 389ms |
0 / 0 |