Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.06.21;
Скачать: CL | DM;

Вниз

Не пойму в чём ошибка - запрос вроде простой   Найти похожие ветки 

 
TheEd   (2008-09-30 03:39) [0]

Есть таблица T1, и подчинённая таблица T2, связаны по полю T1ID.
Нужно выбрать из Т1 все поля, на которые из Т2 есть ссылки напр. более N раз, где N - некая константа.
Делаю так:
select * from T1
 where T1ID in
 (select T1ID from T2 group by T1ID having count(*) > N)

Запрос тормозит офигенно. Это при том, что запрос внутри IN выдаёт всего 5 записей, правда в T1 и T2 записей много...


 
Slym ©   (2008-09-30 05:30) [1]

SELECT T1.*
FROM
(SELECT tid, Count(tid) AS CountId FROM t2 GROUP BY tid) as Temp  INNER JOIN T1 ON T1.id = Temp.tid
WHERE Temp.CountId>5


 
Slym ©   (2008-09-30 05:40) [2]

TheEd   (30.09.08 3:39)
Запрос тормозит офигенно

потомучто твой подзапрос вызывается T1.RecordCount раз и беготни по строкам T1.RecordCount*T2.RecordCount
в моем случае T1.RecordCount+T2.RecordCount


 
TheEd   (2008-09-30 06:10) [3]


> FROM (SELECT tid, Count(tid) AS CountId FROM t2 GROUP BY
> tid) as Temp  INNER JOIN T1 ON T1.id = Temp.tid


могу ошибаться, но у меня InterBase7 - он select внутри from не понимает :(


 
Sergey13 ©   (2008-09-30 08:24) [4]

> [0] TheEd   (30.09.08 03:39)
> Запрос тормозит офигенно. Это при том, что запрос внутри
> IN выдаёт всего 5 записей, правда в T1 и T2 записей много...

А какая часть запроса тормозит то? Подзапрос или основной?


 
Сергей М. ©   (2008-09-30 08:29) [5]


> он select внутри from не понимает


Даже если не понимает, то всегда поймет SP или View


 
Виталий Панасенко   (2008-09-30 09:16) [6]

SP и конструкция
for select ... do - будет очень быстро


 
Sergey13 ©   (2008-09-30 09:20) [7]

> [0] TheEd   (30.09.08 03:39)

А индекс по T1ID в T2 есть?


 
Johnmen ©   (2008-09-30 09:27) [8]

SELECT T1.Field1, T1.Field2, ... FROM T1
JOIN T2 ON T1.T1ID=T2.T1ID
GROUP BY T1.Field1, T1.Field2, ...
HAVING COUNT(*)>N

возможно придется добавить фиктивную агрегатную ф-ию.


 
Правильный$Вася   (2008-09-30 11:00) [9]


>  запрос вроде простой [D7, IB6.x]

противоречит

> у меня InterBase7 - он select внутри


 
TheEd   (2008-09-30 22:36) [10]


> SELECT T1.Field1, T1.Field2, ... FROM T1JOIN T2 ON T1.T1ID=T2.
> T1IDGROUP BY T1.Field1, T1.Field2, ...HAVING COUNT(*)>N


Спасибо, работает!!!



Страницы: 1 вся ветка

Текущий архив: 2009.06.21;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.064 c
2-1240761560
madmech
2009-04-26 19:59
2009.06.21
Помогите разобраться с итоговым столбцом кросс-отчета


15-1239722171
@!!ex
2009-04-14 19:16
2009.06.21
Подскажите хороший багтрекер не сложный в установке.


15-1239864485
Дмитрий С
2009-04-16 10:48
2009.06.21
Куда сохраняется содержимое видеопамяти во время спящего режима?


2-1240905683
Sowyer
2009-04-28 12:01
2009.06.21
Вопрос по Edit


4-1211184805
Barloggg
2008-05-19 12:13
2009.06.21
как отобрать у винды мышь?