powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Paradox Как работает: id IN (select id from..... - почему так долго
5 сообщений из 5, страница 1 из 1
Paradox Как работает: id IN (select id from..... - почему так долго
    #33661756
mixb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возникла проблема в Paradox (работаю через BDE в TQuery Delphi5) :

- конструкция
select * from table1 where id IN (select id from table2 where x = 1)
очень долго (несколько минут) выполняется, причем вот такая конструкция:
select * from table1 where id IN (1,2,3,4,5,6,...)
работает очень быстро

В table1 - 3000 записей в table2 - 5000 записей

Подозреваю что BDE каждый раз перевыполняет (select id from table2 where x = 1)

PS если вместо IN поставить "=" выполняется очень быстро
Может запрос (select id from table2 where x = 1) возвращаеть 0 записей но работает вся конструкция очень долго.
...
Рейтинг: 0 / 0
Paradox Как работает: id IN (select id from..... - почему так долго
    #33663044
golsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй
Код: plaintext
select distinct table1.* from table1, table2 where table2.ID = table1.ID and table2.x =  1 
...
Рейтинг: 0 / 0
Paradox Как работает: id IN (select id from..... - почему так долго
    #33663111
M i x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mixb - мой аккаунт
2golsa - да такой вариант конечно же возможен, но вопрос был в другом - почему IN работает так долго.
На самом деле мне надо DELETE from table1 where id IN (select id from table2 where x = 1). Но это опять таки выполняется долго очень.
Остается вариант выборки id из table2 ручками а затем подстановка в IN (id1,id2,...idn)
...
Рейтинг: 0 / 0
Paradox Как работает: id IN (select id from..... - почему так долго
    #33663317
golsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверь есть ли индекс по ID в table2 - может поможет.
...
Рейтинг: 0 / 0
Paradox Как работает: id IN (select id from..... - почему так долго
    #33663562
M i x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2golsa - индексы все есть (в первую очередь проверил).

Ладно раз никто помочь не может будем ручками делать:
в string загонять id из запроса select id from table2 where x=1 и уже затем вставлять в первый запрос в секции ...IN ('+строка id через запятую +')'

У меня подозрения есть что в Paradox запрос который после IN выполняется для каждой записи.... Может это от настроек зависит?
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Paradox Как работает: id IN (select id from..... - почему так долго
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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