powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите оптимизировать запрос
4 сообщений из 4, страница 1 из 1
Помогите оптимизировать запрос
    #32561292
FEV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Необходимо восстановить ссылочную целостность таблиц путём удаления из первой таблицы всех записей, которые ссылаются на несуществующий ключ второй таблицы. Первое что приходит в голову:
Код: plaintext
DELETE FROM Table1 WHERE ID_Table2 NOT IN (SELECT ID FROM Table2)
НО при достаточно большом количестве записей в Table2 (порядка 200000) запрос выполняется десятками минут. Возможно ли как то ускорить процесс?
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #32561300
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно попробовать внешнее объединение

Код: plaintext
1.
2.
3.
DELETE Table1.*
FROM Table1 Left join Table2
  On Table1.ID_Table2 = Table2.ID
WHERE Table2.ID Is Null
?
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #32561313
FEV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 paparome
Спасибо, именно так и хотел, только не знал как составить такой запрос
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #32564457
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А разве проходит "FROM Table1 Left join Table2" ?
или нужно "left OUTER join"? или это одно и то же у Access-а?

А я бы по другому написал...
Код: plaintext
1.
2.
DELETE FROM Table1 t1
WHERE not EXISTS (SELECT  1  FROM Table2 t2 WHERE t2.ID = t1.ID_Table2)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите оптимизировать запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]