PDA

View Full Version : کوئری سنگین و افزایش سرعت



mehrab1387
جمعه 05 اسفند 1390, 11:39 صبح
سلام به دوستان
من یک جدول دارم که شامل بیش از صد هزار text است که هر کدام یک Id مشخص دارد
و در یک جدول دیگر ده هزار کلمه دارم .
من می خواهم برای هر کلمه در جدول دوم از جدول اولی Id مربوط به text هایی که شامل این کلمه هستند را بدست آورم.و این کار را برای هر ده هزار کلمه باید انجام دهم
اگر بخواهم با سی شارپ برنامه بنویسم و بخواهم تعداد Text هایی را که شامل هر کلمه هستند را بدست اورم کار زمان بری است
شما نظری ندارید تا بتونه به من کمک کنه:گریه:

amirsajjadi
جمعه 05 اسفند 1390, 12:12 عصر
با سلام
چرا توی خود اسکیوال به صورت فانکشن استفاده نمیکنید؟
مثلا تابعی بنویسید که عمل جستجو رو انجام بده و آی دی رو برگردونه. حالا با یک دستور select اون تابع رو برای تمام کلمات استفاده کنید.
البته این کار هم زمان و بار زیادی داره ولی مزیتش اینه که خود اسکیو ال این کار رو انجام میده و دیگه برنامتون تو حالت انتظار (هنگ) نمیکنه.

یوسف زالی
جمعه 05 اسفند 1390, 17:05 عصر
سلام.
این بدترین پیشنهاده.
سرعت انجام یک عمل محاسباتی یا مقایسه ای در زبان های Native "دهها برابر" اس کیو ال هست.
مخصوصا هنگامی که مولتی یوزر هستید. به هیچ وجه چنین کاری نکنید و حتما در UI انجام بدید.
شما در برنامه بهینه سازی رو انجام بدید.
مثلا در هنگام افزوده شدن یک آیتم همون لحظه آی دی ها رو بدست بیارید و همه رو موکول به نهایت کار نکنید.

amirsajjadi
جمعه 05 اسفند 1390, 20:41 عصر
سرعت انجام یک عمل محاسباتی یا مقایسه ای در زبان های Native "دهها برابر" اس کیو ال هست.دهها برابر !!!؟؟؟
C#یک زبان native؟

یوسف زالی
جمعه 05 اسفند 1390, 21:35 عصر
شما تا حالا یک محاسبه سنگین رو با اس کیو ال انجام دادی؟
این ساده ترین مثاله. در سی شارپ تست کنید و اس کیو ال رو هم ببینید.



declare @i int
declare @j int
set @i = 0
while @i < 1000
begin
set @i += 1
set @j = 0
while @j < 1000
begin
set @j += 1
print @i*@j
end
end


زبان Native شما به چی می گی؟؟؟

mehrab1387
جمعه 05 اسفند 1390, 22:04 عصر
دوستان حالا من به نظر شما بالاخره چه کار کنم؟
راستی من زیاد با function نوشتن در اس کیو ال اشنا نیستم

amirsajjadi
جمعه 05 اسفند 1390, 22:43 عصر
توی سی شارپ CLR چیکارس؟
برنامه ی سنگین هم زیاد نوشتم ولی تمام بار برنامه رو روی دوش اپلیکیشن نمی اندازم بلکه تقسیم بار میکنم. بین اپلیکیشن(معمولا linq) و اسکیوال

یوسف زالی
شنبه 06 اسفند 1390, 00:56 صبح
باز هم می گم که اپلیکیشن های وین بیس بهترین محل برای محاسبات هست.
تا می تونید دو تا کار نکنید:
1- ترافیک شبکه رو افزایش ندید
2- محاسبات حلقه دار رو در اس کیو ال انجام ندید

این کار وقتی مولتی یوزر هستید به معنی دان شدن سیستم هست.

baktash.n81@gmail.com
شنبه 06 اسفند 1390, 09:09 صبح
سلام

به نظرم قبل از اینکه بحث کنیم ... صورت مسئله رو خوب درک کنیم ... کلا صورت مسئله شما چیه ... ؟ کاربر قراره چه کاری انجام بده ... متن ها تغییر می کنن ؟؟ کلمات چه طور ... ؟؟ اگه تغییر می کنند بیشتر تغییرات انجام می شه یا بیشتر جوستجو می شه ... ؟؟ پلت فرمتون چی هست ... ؟ و و و