Сижу мучаюсь. Есть запрос типа:
Код: Выделить всё
select * from orders X
where (select count(id) from packets Z where X.ID = Z.Ordercode) > X
Что можете посоветовать сделать чтобы было быстрее?
Спасибо,
Олег.
Код: Выделить всё
select * from orders X
where (select count(id) from packets Z where X.ID = Z.Ordercode) > X
Нууу... эт, канэшна, дело вкуса. Можно помучитцо, а можно какую-нить книжку вумную почитать про SQL. Граббера того же.Wontar писал(а): Сижу мучаюсь.
Звёздочка - это принципиально? Или таки достаточно некоторого вменяемого набора полей? Тогда что-нить вроде:Wontar писал(а): Есть запрос типа:Код: Выделить всё
select * from orders X where (select count(id) from packets Z where X.ID = Z.Ordercode) > X
Код: Выделить всё
Select X.ID, X.Col1, X.Col2, X.Col3, Count(*)
From Orders X
Join Packets Z
On Z.OrderCode=X.ID
Group By X.ID, X.Col1, X.Col2, X.Col3
Having Count(*)>:X
Ужос.Wontar писал(а): Этот запрос при налияии в таблице 240к записей выполняется вечно.
Если можно, объясните, как выполняется этот запрос и что нужно делать если нужно отфильтровать Packets по CreationDateTime и узнать какие заказы не содержат пакетов созданных в период времени. (т.е. count(*) = 0)Тогда что-нить вроде:
Код: Выделить всё
Select X.ID, X.Col1, X.Col2, X.Col3, Count(*) From Orders X Join Packets Z On Z.OrderCode=X.ID Group By X.ID, X.Col1, X.Col2, X.Col3 Having Count(*)>:X