17 / 5 / 0
Регистрация: 16.04.2016
Сообщений: 344
|
|||||||||||
1 | |||||||||||
Как правильно обновить id после удаления записи11.12.2023, 18:15. Показов 6276. Ответов 96
Метки нет Все метки)
(
Всех приветствую. У меня есть таблица,в которой первичный ключ не autoincrement rowid,поэтому я сам создал колонку rowid:
0
|
11.12.2023, 18:15 | |
Ответы с готовыми решениями:
96
FireBase + RecyclerView| как обновить список, после удаления item из базы? Как обновить datagridview после добавления записи? |
![]() 3895 / 1414 / 494
Регистрация: 31.05.2012
Сообщений: 4,968
|
|
18.12.2023, 12:09 | 41 |
там цитата от ТС, ему и адресовано
а я и не утверждал обратного, слово формально о чем то говорит? и далее по тексту об оптимизаторе и плане
0
|
17 / 5 / 0
Регистрация: 16.04.2016
Сообщений: 344
|
|||||||||||
18.12.2023, 16:48 [ТС] | 42 | ||||||||||
6 0 0 SCAN TABLE favourite_posts А вот при запросе
0
|
754 / 271 / 57
Регистрация: 01.06.2023
Сообщений: 750
|
||||||||||||||||
18.12.2023, 17:23 | 43 | |||||||||||||||
после этого как только будет удалена последняя строка из связки, вместе с ней удалиться и сама категория. ВНИМАНИЕ!!! это не сработает если обновить категорию через UPDATE.
0
|
17 / 5 / 0
Регистрация: 16.04.2016
Сообщений: 344
|
|
18.12.2023, 18:24 [ТС] | 44 |
0
|
![]() 3895 / 1414 / 494
Регистрация: 31.05.2012
Сообщений: 4,968
|
|
18.12.2023, 18:59 | 45 |
стоит почитать что такое двоичный или бинарный поиск можно даже в вики. для 10000 это число будет 14
0
|
754 / 271 / 57
Регистрация: 01.06.2023
Сообщений: 750
|
|
18.12.2023, 22:38 | 46 |
Опять же это примерное число. И тем не менее чем больше данных тем дольше поиск. здесь как бы чудес не бывает.
0
|
17 / 5 / 0
Регистрация: 16.04.2016
Сообщений: 344
|
|
18.12.2023, 22:52 [ТС] | 47 |
Обоснуйте пожалуйста,почему 14?
0
|
754 / 271 / 57
Регистрация: 01.06.2023
Сообщений: 750
|
|
18.12.2023, 22:58 | 48 |
0
|
![]() 3895 / 1414 / 494
Регистрация: 31.05.2012
Сообщений: 4,968
|
|
18.12.2023, 23:02 | 49 |
0
|
17 / 5 / 0
Регистрация: 16.04.2016
Сообщений: 344
|
|
18.12.2023, 23:21 [ТС] | 50 |
Добавлено через 2 минуты Ну ближайшая степень это всё же 13,а не 14,или нужна степень большая этого числа?
0
|
754 / 271 / 57
Регистрация: 01.06.2023
Сообщений: 750
|
|
18.12.2023, 23:34 | 51 |
0
|
17 / 5 / 0
Регистрация: 16.04.2016
Сообщений: 344
|
|
19.12.2023, 01:45 [ТС] | 52 |
0
|
754 / 271 / 57
Регистрация: 01.06.2023
Сообщений: 750
|
|
19.12.2023, 08:11 | 53 |
0
|
17 / 5 / 0
Регистрация: 16.04.2016
Сообщений: 344
|
||||||||||||||||
19.12.2023, 15:49 [ТС] | 54 | |||||||||||||||
По возрастанию:
Я бы мог,конечно,хранить rowid в поле объекта post,и тогда бы мой запрос упростился,но я не хочу это делать,т.к мне сервер не отдаёт rowid. Насколько оптимальный мой запрос?
0
|
754 / 271 / 57
Регистрация: 01.06.2023
Сообщений: 750
|
|||||||||||
19.12.2023, 16:14 | 55 | ||||||||||
- SEARCH TABLE USING COVERING INDEX - очень хорошо - SEARCH TABLE USING PRIMARY KEY - тоже хорошо, но если строки жирные, то хуже чем предыдущий вариант - SEARCH TABLE USING INDEX - хороший вариант, но хуже двух предыдущих - SCAN TABLE - плохо для больших таблиц, нормально для маленьких Если взять что нужно удалить 1000 осиротевших записей, то запрос отработает 1 раз и сделает это быстрее чем 1000 раз запустится триггер, но триггер это время распределяет на каждое удаление и это будет не зметно. пользователь не заметит если пост удаляется не 10мс, а условно 11 мс. Следующая
0
|
17 / 5 / 0
Регистрация: 16.04.2016
Сообщений: 344
|
||||||
19.12.2023, 17:39 [ТС] | 56 | |||||
К примеру запрос:
0
|
17 / 5 / 0
Регистрация: 16.04.2016
Сообщений: 344
|
||||||||||||||||
20.12.2023, 01:43 [ТС] | 57 | |||||||||||||||
К сожалению пока не получил ответа на мои вопросы. В общем продолжил изучать планы запроса,но мне непонятны некоторые вещи:
Почему здесь нет covered index? 14 0 0 SEARCH TABLE post_tag_relationship USING COVERING INDEX sqlite_autoindex_post_tag_relationship_1 (post_id=?) А здесь он почему-то есть,как и для категорий. Ещё непонятно почему вначале удаляются записи с таблицей с тегами,а потом с таблицей с категориями. Мне-то последовательность не важна,но просто любопытный факт. Также интересно,какой запрос под капотом использует sqlite,чтобы каскадно удалить записи? Пока что я для удаления категорий использую старый запрос,т.к хочу отладить работу sql запросов,но потом,конечно,за меню или на триггер,или на Ваш второй запрос,или на третий запрос без триггера. Главное чтобы это работало быстрее,почему я и спрашиваю у Вас,какой запрос будет работать быстрее?
5 0 0 CORRELATED SCALAR SUBQUERY 1 9 5 0 SCAN TABLE post_category_relationship А тут с чего он вздумал сканировать две таблицы (такая же ситуация и с тегами)? Ведь id в поле с категориями unique,значит должен использоваться индекс. Насчёт второй таблицы понятно т.к,как мы с Вами выяснили,для второго столбца нужен отдельный индекс. Кстати интересно,если у нас составной индекс из трёх столбцов,для второго и третьего столбца,если нам нужно работать именно с ними,тоже нужен отдельный индекс,или только для третьего? И что значит SCALAR SUBQUERY 1?
0
|
754 / 271 / 57
Регистрация: 01.06.2023
Сообщений: 750
|
|||||||||||
20.12.2023, 08:49 | 58 | ||||||||||
Что значит большая таблица
Значит в ней много данных. много строк. и она занимает несколько страниц на диске
1. запоминать позицию id и уже от нее запрашивать очередную порцию данных. 2. Сразу разбивать выборку на порции и в приложении помнить что на стронице N содержатся посты с номерами K10,K11,... 3. Если нужно только перемещение вперед, то открывайте курсор и делаете fetch порциями 1) По бинарному дереву индекса найти нужную запись, извлечь ее. 2) Строка индекса содержит ссылку на физическое располодение записи в основной, по этой ссылке нужно сходить в основную таблицу и достать недостающие колонки Как Вариант при массовом удалении, удаляете триггеры и удаляете все данные и создаете триггеры заново.
1) пройдись по каждой записи в таблице categories 2) для каждой записи выполни корелирующий запроc 3) пройдись по таблице post_category_relationship и найди с id из родительского запроса 4) В плане почему то не пишется но подразумевается потом пометь запись как удаленная Скорее всего у Вас нет индекса post_category_relationship(id)
0
|
17 / 5 / 0
Регистрация: 16.04.2016
Сообщений: 344
|
|
20.12.2023, 18:03 [ТС] | 59 |
Добавлено через 5 минут Кстати ещё хочу уточнить,получается если столбцы,по которым мы хотим делать простой или составной индекс,в сумме будут содержать большие значения,или хотя бы один из столбцов будет их содержать,к примеру массив байтов,лучше индекс не делать?
0
|
754 / 271 / 57
Регистрация: 01.06.2023
Сообщений: 750
|
|
20.12.2023, 18:18 | 60 |
Возможно у вас вообще неправильно запрос написан, Вы же так и не прислали структуру бд со всеми зависимостями Добавлено через 4 минуты Если составной нужен либо для обеспечения уникальности, но и тут плохое решение тащить большие текстовые поля. Еще составной может понадобиться если поиск идет сразу по нескольким полям. Например нужно удалить связку между постом и тегом.
0
|
20.12.2023, 18:18 | |
Помогаю со студенческими работами здесь
60
Как правильно обновить DataGrid после добавления строки
Обновить грид после удаления из бд
Список файлов в listView. Как убрать пути и обновить список после удаления элемента Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
![]() |
Новые блоги и статьи
![]() |
||||
Что нового в C# 14
UnmanagedCoder 10.03.2025
Предстоящая версия C# 14 обещает принести изменения, которые сделают разработку еще более приятной и эффективной.
Что стоит отметить, так это влияние сообщества разработчиков на формирование новых. . .
|
Формулы поворота
Igor3D 10.03.2025
Добрый день
Тема
Эти формулы приводятся во множестве тьюториалов, часто под видом "матрица вращения на плоскости".
x' = x * cos(a) - y * sin(a)
y' = y * cos(a) + x * sin(a)
Как бы Вы их. . .
|
Что нового в .NET 10
UnmanagedCoder 10.03.2025
. NET 10 выходит как релиз с длительной поддержкой (LTS), включающей три года обновлений. В этом обновлении Microsoft сфокусировались на нескольких направлениях: производительность, оптимизация. . .
|
Отложенное высвобождение, RCU и Hazard Pointer в C++26
NullReferenced 09.03.2025
Многопоточное программирование стало важной частью современной разработки. Когда несколько потоков одновременно работают с общими данными, возникает целый ряд проблем, связанных с синхронизацией и. . .
|
Неблокирующийся стек на C++26
NullReferenced 09.03.2025
Традиционные способы синхронизации в многопоточном программировании — мьютексы, семафоры, условные переменные — часто превращаются в узкое место в плане производительности. При этом неблокирующиеся. . .
|
Обработка строк в C++26: Новые возможности string и string_view
NullReferenced 09.03.2025
Новый стандарт C++26 предлагает много улучшений для работы с привычными string и относительно новыми string_view.
string_view - это невладеющая ссылка на последовательность символов, появившаяся в. . .
|
Мой первый аддон для Blender 3D, с помощью нейронки (не зная даже азов пайтона, но это не значит что так и с остальным).
Hrethgir 09.03.2025
Потратил весь день. Пол-дня мне хватило, чтобы понять что с версией с 14B мне не одолеть написание функционального кода, на языке с которым я вообще никак не знаком - пайтон. Версия 22B от другого. . .
|
Einstein@Home сегодня исполняется двадцать лет!
Programma_Boinc 09.03.2025
Einstein@Home сегодня исполняется двадцать лет!
Отправлено 19 февраля 2025 года в 17:20:21 UTC
Я хочу поздравить всех наших волонтеров, разработчиков и ученых из Einstein@Home.
Мы официально. . .
|
Заполнители и расширенный набор символов в C++26
NullReferenced 09.03.2025
C++26 представляет два важных обновления: заполнители и расширенный набор символов. Заполнители (placeholders) решают давнюю проблему лаконичности кода в шаблонных выражениях и лямбда-функциях. Они. . .
|
Контракты в C++26
NullReferenced 09.03.2025
Контракты – это механизм, позволяющий указывать предусловия, постусловия и инварианты для функций в коде. Эта функциональность должна была стать частью C++20, но была исключена на встрече комитета. . .
|