Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите оптимизировать запрос / 4 сообщений из 4, страница 1 из 1
15.06.2004, 12:01:59
    #32561292
FEV
FEV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите оптимизировать запрос
Необходимо восстановить ссылочную целостность таблиц путём удаления из первой таблицы всех записей, которые ссылаются на несуществующий ключ второй таблицы. Первое что приходит в голову:
Код: plaintext
DELETE FROM Table1 WHERE ID_Table2 NOT IN (SELECT ID FROM Table2)
НО при достаточно большом количестве записей в Table2 (порядка 200000) запрос выполняется десятками минут. Возможно ли как то ускорить процесс?
...
Рейтинг: 0 / 0
15.06.2004, 12:06:43
    #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
15.06.2004, 12:11:51
    #32561313
FEV
FEV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите оптимизировать запрос
2 paparome
Спасибо, именно так и хотел, только не знал как составить такой запрос
...
Рейтинг: 0 / 0
16.06.2004, 20:29:59
    #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
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите оптимизировать запрос / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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