Главная страница
    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
2-1241207260
бульдозер
2009-05-01 23:47
2009.06.21
CreateProcess определить готовность запускаемого приложения


15-1239980765
Мазут Береговой
2009-04-17 19:06
2009.06.21
Unicode и его конвертация


2-1241528409
Knob
2009-05-05 17:00
2009.06.21
Нажатие кнопки


15-1240000612
Юрий
2009-04-18 00:36
2009.06.21
С днем рождения ! 18 апреля 2009 суббота


15-1239705931
12
2009-04-14 14:45
2009.06.21
Настройка Windows. Ограничить процессорное время для процесса





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский