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

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

Оптимизация запроса [D6, dBase, FoxPro]


PaulSin ©   (2003-06-03 08:56:00) 

Есть две таблицы. Нужно выбрать записи к примеру из первой таблицы которых нет во второй таблице. Запрос Select a.a,a.b,a.c from a where a.a not in (select f from e) работает долго. Есть соображения по оптимизации ?
в подзапросе таблица меньшая по размеру(2,5 М), в первой части запроса таблица размером 6 М.


PaulSin   (2003-06-03 09:40:00) [1]

Всем принимавшим участие в оптимизации ПАСИБО!!!!!


paulsin   (2003-06-03 09:37:00) [2]

Первый вариант лучше


Соловьев   (2003-06-03 09:28:00) [3]


> Johnmen © (03.06.03 09:26

:)


Соловьев   (2003-06-03 09:27:00) [4]

А так?

select t1.*
from table1 t1
left join table2 t2 on t1.id=t2.id
where t2.id is NULL


Johnmen   (2003-06-03 09:26:00) [5]

>stone © (03.06.03 09:14)

Ничего подобного. Классическая классика вот это :

SELECT ...
FROM a
LEFT JOIN b ON a.id=b.id
WHERE b.id IS NULL


paulsin   (2003-06-03 09:23:00) [6]

Великолепно !!!!!
> Dan (03.06.03 09:14)
> т.е. по а.а ? я не знаю движка dbase, но попробуй сделать
> индекс по e.f и переписать запрос так:
> SELECT a.a, a.b, a.c
> FROM a
> WHERE NOT EXISTS(
> SELECT *
> FROM e
> WHERE f=a.a)
>
>
> stone © (03.06.03 09:14)
> Это классичечкий пример:
> Select * from a where not exists(select * from e where a.a
> = e.a)


Dan   (2003-06-03 09:14:00) [7]

т.е. по а.а ? я не знаю движка dbase, но попробуй сделать индекс по e.f и переписать запрос так:
SELECT a.a, a.b, a.c
FROM a
WHERE NOT EXISTS(
SELECT *
FROM e
WHERE f=a.a)


stone   (2003-06-03 09:14:00) [8]

Это классичечкий пример:
Select * from a where not exists(select * from e where a.a = e.a)


paulsin   (2003-06-03 09:10:00) [9]

По первой таблице по полю которое ищу во второй таблице


paulsin   (2003-06-03 09:09:00) [10]

локалка dBaseIV


Dan   (2003-06-03 09:08:00) [11]

и какие индексы есть ?


Dan   (2003-06-03 09:07:00) [12]

На какой СУБД пишешь ?


Наверх

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