PDA

View Full Version : چطوری مقایسه های زیادی رو روی تعداد زیادی رکورد با حداقل زمان انجام بدم؟



saeed6162
چهارشنبه 02 مرداد 1392, 10:37 صبح
سلام خسته نباشید
دو جدول دارم که بصورت زیر تعریف شدند

جدول اول MainTable (حدود یک و نیم میلیون رکورد داره)؛ فیلدهاش:
id int primary
ch1 int
ch2 int
ch3 int
.
.
.
ch130 int

Flag1 int
Flag2 int
Flag3 int
.
.
.
Flag130


جدول دوم DetailTable (حدود 1000 رکورد داره)؛ فیلدهاش:
ch_code int
attrib1 int
attrib2 int
attrib3 int

توضیح : جدول DetailTable خصوصیات مربوط به فیلدهای 130گانه MainTable هست. که از طریق فیلد الی (130 الی 1)ch و ch_code با هم در ارتباط هستند.

و اما کاری که می خوام انجام بدم:
به ازای همه یک و نیم میلیون رکورد جدول اول(maintable) باید تمامی 130 فیلدش (از ch1 الی ch130) به اینصورت مقایسه بشن که هر فیلد با 3 تا فیلد قبلیش و 3 تا فیلد بعدیش مقایسه بشه و در صورتی که 3 رکورد قبلی و 3 رکورد بعدی attribهاش همه با هم برابر بودند (یعنی attrib1 هاشون باهم برابر بود، attrib2هاشون باهم برابر بود و attrib3 هاشون هم با هم برابر بود) و رکورد جاری حداقل یکی از attribهاش برابر با همون attrib از اون 6 رکورد نبود، Flag مربوط به اون رکورد True بشه.
برای رکوردهای مثل رکورد اول که 3 ردیف قبل ندارند فقط 3 ردیف بعد مطرح هستند.
برای رکوردهایی مثل رکورد دوم ، فقط 1 ردیف قبل و 3 ردیف بعد وجود دارند که باید مقایسه انجام بشه و ...


دوستان با چه کوئری ای میشه این مسئله رو در حداقل زمان برای این همه دیتا و بااین همه مقایسه انجام داد؟
ممنونم ازتون