Форум: "Базы";
Текущий архив: 2009.06.21;
Скачать: [xml.tar.bz2];
ВнизНе пойму в чём ошибка - запрос вроде простой Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c