![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Долгоиграющий запрос в Access [D6]
msguns © (2004-11-04 17:32:00)Запрос:
DELETE FROM NT
WHERE FID IN
(SELECT DISTINCT NT.FID FROM NT,F
WHERE NT.FID=F.TFID)
Детали:
База "местная"
В таблице NT 22тыс., в F 9,5тыс записей.
На поле FID индекса нет
Запрос выполнялся:
в SQL Exlorer > 15 мин.
в аксесе около 12 мин.
Если же этот подзапрос вложить в другой (вместо DELETE, например UPDATE) то время выполнения еще возрастает.
Это аксес такой или запрос или руки или мозги ? В IB такие штучки улетают незаметно. Неужели надо обязательно индексы ?
msguns (2004-11-04 17:55:00) [21]Т.е. дело все же не в ручках (мозгах) ?
Если добавить индекс, насколько это повысит скорость ?
Johnmen (2004-11-04 17:51:00) [22]>Vlad © (04.11.04 17:45) [1]
Я тоже так думаю.
Вдуматься в логику запроса некому. А у ИБ, да и у любого SQL сервера есть кому. И этот кто-то поймет, что вложенный запрос достаточно выполнить 1 раз...
Vlad (2004-11-04 17:45:00) [23]ну так для каждой удаляемой записи из NT строится подзапрос в 22тыс * 9.5тыс записей (поскольку индекса нет), а это многовато.
в IB возможно оптимизатор умнее (хотя я не проверял, только предполагаю) и строит таблицу всего один раз