Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.012 c
2-1241072754
Vale
2009-04-30 10:25
2009.06.21
TRadioButton - как сгруппировать?


2-1241429434
apic
2009-05-04 13:30
2009.06.21
rave


15-1239783316
Yurikon
2009-04-15 12:15
2009.06.21
Инсталятор InstallShield


15-1239967211
passlight
2009-04-17 15:20
2009.06.21
Кому-нибудь нужны книги по программированию (базы данных, .NET)?


2-1241085183
Галинка
2009-04-30 13:53
2009.06.21
перехват нажатия гиперссылки в браузере





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский