У меня есть 3 таблицы:Как избежать большого предложения?
table_product (30 000 row)
---------
ID
label
_
table_period (225 000 row)
---------
ID
date_start
date_end
default_price
FK_ID_product
и
table_special_offer (10 000 row)
-----
ID
label
date_start,
date_end,
special_offer_price
FK_ID_period
Поэтому мне нужно загружать данные из всех этих таблицы, так вот это то, что я делаю: 1/данные нагрузки из «table_product», как это
select *
from table_product
where label like 'gun%'
2/загрузки данных из "table_period", как это
select *
from table_period
where FK_ID_product IN(list of all the ids selected in the 1)
3/загрузки данных из "table_special_offer" как этот
select *
from table_special_offer
where FK_ID_period IN(list of all the ids selected in the 2)
Как вы можете думать, что положение в в пункте 3 может быть очень большой (например, 75 000 больших), поэтому я получил много шансов получить либо тайм-аут, либо что-то вроде «Ограничение служб выражений было достигнуто».
У вас когда-нибудь было что-то подобное, и как вам удалось избежать этого?
PS: контекст: SQL сервер 2005, .net 2.0 (пожалуйста, не говорите мне, что мой дизайн плох, или я не должен делать «выбрать *», я просто упростили мою проблему, так что это немного проще, чем 500 страниц, описывающих мой бизнес).
Спасибо.
Не поможет. – gbn 2010-11-23 10:24:05
, что было бы решением, возможно, с существующим вместо (se @atathedev link). но проблема здесь заключается в том, что это решение было бы эффективным, если бы у меня было много продукта/периода, если я выберу только несколько, я лучше сделаю явное. – 2010-11-23 10:25:40
@gbn Ухаживать за разъяснением? – 2010-11-23 10:25:44