Помогите пожалуйста с запросом (очень медленно работает и выдаёт не то что надо).
Что у меня есть:
Есть таблицы:
1. таблица сборок
Код: Выделить всё
SBORKI (
IDSBORKA INTEGER NOT NULL ,
OBOZNACH VARCHAR(50) NOT NULL ,
NAIMENOVAN VARCHAR(50) NOT NULL ,
REV VARCHAR(20) ,
ISPOLN VARCHAR(20) ,
IDSBORKASTATUS INTEGER NOT NULL ,
IDEDIZM INTEGER NOT NULL ,
IDPROIZVODITEL INTEGER NOT NULL ,
PRIMECH VARCHAR(50) ,
IDPRIMLEVEL INTEGER NOT NULL
);
2. таблица связей между сборками (сборки могут включать друг друга. типа как вложенные папки)
Код: Выделить всё
IERHLINK (
IDIERHLINK INTEGER NOT NULL ,
IDSBORKAPARENT INTEGER NOT NULL ,
IDSBORKACHILD INTEGER NOT NULL ,
COUNTS INTEGER NOT NULL ,
POS VARCHAR(20) NOT NULL
);
3. Представление QSborki
Код: Выделить всё
VIEW QSBORKI(
IDSBORKA,
OBOZNACH,
NAIMENOVAN,
REV,
ISPOLN,
IDSBORKASTATUS,
SBORKASTATUSNAIMENOVAN,
IDEDIZM,
EDIZMNAIMENOVAN,
IDPROIZVODITEL,
PROIZVODITELNAIMENOVAN,
PRIMECH,
IDPRIMLEVEL,
PRIMLEVELNAIMENOVAN)
AS
SELECT Sborki.IdSborka,
Sborki.Oboznach,
Sborki.Naimenovan,
Sborki.Rev,
Sborki.Ispoln,
Sborki.IdSborkaStatus,
SborkaStatus.Naimenovan,
sborki.idedizm,
EdIzm.naimenovan,//из справочной таблицы
sborki.idproizvoditel,//из справочной таблицы
proizvoditel.naimenovan,//из справочной таблицы
Sborki.Primech,
Sborki.idprimlevel,
PrimLevel.naimenovan //из справочной таблицы
FROM Sborki, SborkaStatus, EdIzm,proizvoditel,PrimLevel
WHERE SborkaStatus.IdSborkaStatus=Sborki.IdSborkaStatus and
EdIzm.idedizm=sborki.idedizm and
Proizvoditel.idproizvoditel=sborki.idproizvoditel and
PrimLevel.idprimlevel=sborki.idprimlevel
;
В справочных таблицах примерно 10-20 записей
QSborki естественно 580.
Есть запрос
Код: Выделить всё
SELECT IdSborka, Oboznach, Naimenovan, Rev, Ispoln, SborkaStatusNaimenovan, Primech
FROM QSborki
WHERE
idSborkaStatus=4 and
not(exists (Select * from IerhLink where IerhLink.IdSborkaChild=QSborki.IdSborka))
Order by QSborki.Naimenovan
В результате:
Запрос работает долго - секунд 20, записи выбираются не все
ПОМОГИТЕ ПОЖАЛУЙСТА!