Главная страница
    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.005 c
15-1239395408
Юрий
2009-04-11 00:30
2009.06.21
С Днём рождения ! 11 апреля 2009 суббота


15-1234784192
Rule
2009-02-16 14:36
2009.06.21
Ура хвастаюсь, свершилось. Началось внедрение нашего ПО в Стрим.


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


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


15-1239374642
Igorek
2009-04-10 18:44
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский