Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Долгоиграющий запрос в Access [D6]


Страницы:   1 2

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 возможно оптимизатор умнее (хотя я не проверял, только предполагаю) и строит таблицу всего один раз


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо