Форум: "Базы";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];
ВнизОптимизация запроса Найти похожие ветки
← →
PaulSin (2003-06-03 08:56) [0]Есть две таблицы. Нужно выбрать записи к примеру из первой таблицы которых нет во второй таблице. Запрос Select a.a,a.b,a.c from a where a.a not in (select f from e) работает долго. Есть соображения по оптимизации ?
в подзапросе таблица меньшая по размеру(2,5 М), в первой части запроса таблица размером 6 М.
← →
Dan (2003-06-03 09:07) [1]На какой СУБД пишешь ?
← →
Dan (2003-06-03 09:08) [2]и какие индексы есть ?
← →
paulsin (2003-06-03 09:09) [3]локалка dBaseIV
← →
paulsin (2003-06-03 09:10) [4]По первой таблице по полю которое ищу во второй таблице
← →
Dan (2003-06-03 09:14) [5]т.е. по а.а ? я не знаю движка 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) [6]Это классичечкий пример:
Select * from a where not exists(select * from e where a.a = e.a)
← →
paulsin (2003-06-03 09:23) [7]Великолепно !!!!!
> 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)
← →
Johnmen (2003-06-03 09:26) [8]>stone © (03.06.03 09:14)
Ничего подобного. Классическая классика вот это :
SELECT ...
FROM a
LEFT JOIN b ON a.id=b.id
WHERE b.id IS NULL
← →
Соловьев (2003-06-03 09:27) [9]А так?
select t1.*
from table1 t1
left join table2 t2 on t1.id=t2.id
where t2.id is NULL
← →
Соловьев (2003-06-03 09:28) [10]
> Johnmen © (03.06.03 09:26
:)
← →
paulsin (2003-06-03 09:37) [11]Первый вариант лучше
← →
PaulSin (2003-06-03 09:40) [12]Всем принимавшим участие в оптимизации ПАСИБО!!!!!
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.028 c