View Full Version : حرفه ای: استفاده از دستور SQL به جای FOR در VB
saeed_r67
چهارشنبه 01 تیر 1390, 10:16 صبح
سلام.
یه برنامه دارم که توش نیاز به سرعت کار دارم و برای ایجاد حلقه نمی خوام از FOR یا DO و... استفاده کنم ، و برای سرعت بیشتر نیاز به کد SQL (از نوع STORED PROCEDURES ) دارم.
پروژه رو هم گذاشتم ، که البته با کد FOR نوشتم .
اگه دوستان پروژه رو با کد SQL پیاده سازی کنند ممنون میشم.قسمت FOR خیلی مهمه
بازم ممنون
Mr'Jamshidy
چهارشنبه 01 تیر 1390, 11:11 صبح
سلام.
یه برنامه دارم که توش نیاز به سرعت کار دارم و برای ایجاد حلقه نمی خوام از FOR یا DO و... استفاده کنم ، و برای سرعت بیشتر نیاز به کد SQL (از نوع STORED PROCEDURES ) دارم.
پروژه رو هم گذاشتم ، که البته با کد FOR نوشتم .
اگه دوستان پروژه رو با کد SQL پیاده سازی کنند ممنون میشم.قسمت FOR خیلی مهمه
بازم ممنون
نیاز شما به سرعت یک امر طبیعیه و باید به این نکته توجه داشته باشید که حلقه به خودیه خود سرعت خیلی بالایی داره برای درک این موضوع سورس زیر رو دانلود کنید
من عدد پیشفرض رو برابر 100 میلیارد گزاشتم و این تعداد در یک ثانیه به پایان میرسه
پایین اومدن سرعت برنامه شما برای کد هایی که استفاده میکنید
اگر بتونید کد های استفاده شده رو تبدیل به API کنید سرعت برنامه تون 100 برابر بیشتر میشه نسبت به توابع داخلی VB
Mr'Jamshidy
چهارشنبه 01 تیر 1390, 11:14 صبح
ببخشید سورس رو یادم رفت ضمیمه کنم
saeed_r67
چهارشنبه 01 تیر 1390, 11:54 صبح
نیاز شما به سرعت یک امر طبیعیه و باید به این نکته توجه داشته باشید که حلقه به خودیه خود سرعت خیلی بالایی داره برای درک این موضوع سورس زیر رو دانلود کنید
من عدد پیشفرض رو برابر 100 میلیارد گزاشتم و این تعداد در یک ثانیه به پایان میرسه
دوست عزیز شما به سورسی که گذاشتم توجه داشتید؟
اگر شما بخواهید 100میلیارد رکورد رو در دیتابیس بسازید آیا باز این نظر رو داشتید.
ممنون از لطفتون.
MahmoodGH
چهارشنبه 01 تیر 1390, 12:15 عصر
نیاز شما به سرعت یک امر طبیعیه و باید به این نکته توجه داشته باشید که حلقه به خودیه خود سرعت خیلی بالایی داره برای درک این موضوع سورس زیر رو دانلود کنید
من عدد پیشفرض رو برابر 100 میلیارد گزاشتم و این تعداد در یک ثانیه به پایان میرسه
پایین اومدن سرعت برنامه شما برای کد هایی که استفاده میکنید
اگر بتونید کد های استفاده شده رو تبدیل به API کنید سرعت برنامه تون 100 برابر بیشتر میشه نسبت به توابع داخلی VB
سلام
دوست من ، مطمئنا سرعت توابع رو باید در موقع استفاده ، و با توجه به کدهای دیگه سنجید. مثلا همین کدی که شما گزاشتی ، اگه بخوایم مقدار i رو به ListBox اضافه کنیم برنامه هنگ می کنه. شما یه حلقه ساختی که تو این حقه هیچ کاری صورت نمی پذیره مگر یه شمارش ساده ، مطمئنا باید انتظار داشت که در عرض یه ثانیه تموم بشه !
Dim tim As Long
Dim i As Long
tim = Timer
For i = 0 To CLng(Text1.Text)
lst.AddItem i
Next
tim = Timer - tim
MsgBox tim
Mr'Jamshidy
پنج شنبه 02 تیر 1390, 01:56 صبح
سورسی که من گزاشتم فقط برای این بود که دوستمون متوجه بشه سرعت حلقه چقدره این 1
دوما شما اگر از همون اسکریپت SQL استفاده کنی فکر میکنی اسکریپتت رو کجا وارد میکنی؟ داخل کامپوننت!!! کامپوننت چه کاری انجام میده؟ همون کد هایی که شما مینویسی و به کامپوننت میدی
من از اسکریپت های SQL هیچی نمیدونم اما اینو میدونم اگر از کد درست در جای درست استفاده بشه سرعت قابل توجهی خواهی داشت
در ضمن این موضوع رو همیشه مد نظر داشته باش
توابع داخلی ویبی که شما استفاده میکنی دو واقع یک لینک به DLL ی به نام MSVBVM6.DLL هست
این DLL تابع درخواستی شما رو آنالیز میکنه و بر حسب نیاز شما API های مورد نظر رو از DLL های ویندوز اجرا میکنه
این یعنی افت سرعت به معنای واقعی
حالا اگر شما همین کد رو مستقیم به API لینک کنی چی میشه؟
قسمت لینک شدن به MSVBVM6.DLL و آنالیزش حذف میشه و اطمینان داشته باش سرعتت تا حدود 100 برابر افزایش پیدا میکنه
سرعت حلقه هم بسته به کد هایی که وارد میشه بالا و پایین میره
پس حواست باشه از کد های اضافه خود داری کنی
بازم اگر نتونستم اونطور که باید راهنمایی کنم منو ببخش
saeed_r67
پنج شنبه 02 تیر 1390, 09:41 صبح
بازم اگر نتونستم اونطور که باید راهنمایی کنم منو ببخش
ممنون که وقت گذاشتی،
saeed_r67
پنج شنبه 02 تیر 1390, 09:42 صبح
لطفا یکی که به sql وارده کمک کنه
vbhamed
پنج شنبه 02 تیر 1390, 11:40 صبح
سلام
اين دستور رو اجرا كنيد
Sql = "INSERT INTO VARIZ SELECT KodHesab AS KodHesab, Mablagh2 AS Mablagh, Tarikh AS Tarikh " & _
"FROM (SELECT KodHesab, Mablagh*2 AS Mablagh2, Tarikh From hesab WHERE hesab.tarikh=" & TARIKH.Text & ")"
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.