PDA

View Full Version : سوال: زمان بر بودن یک select ساده



rasoolf
شنبه 01 آذر 1393, 18:36 عصر
سلام دوستان

من یک select ساده در برنامه انجام میدم (تعداد داده های موجود در جدول 500000 رکورد است) اما حدود 4 الی 5 ثانیه طول میکشه دستور select اجرا بشه و حدود 2 الی 3 ثانیه هم میکشه که داده را داخل datagridview نمایش داده بشن که جمعاً در حدود 8 ثانیه میشه.

داخل خود sqlserver هم تست کردم حدود 5 ثانیه طول کشید تا دستور select کامل اجرا بشه.

حال سوال من اینه که اگه تو یه برنامه مجبور باشیم کلی داده را داخل دیتا گرید ویو نمایش بدیم که برنامه زمانبر میشه و حوصله کاربر سرمیره لطفاً راهنمایی کنید با تشکر.

در ضمن این هم کد اتصال به بانک و دستور select.



SqlConnection sqlcon = new SqlConnection("Data Source=.;Initial Catalog=DA;Integrated Security=True");
SqlCommand sqlcmd = new SqlCommand("Select * from Table_1", sqlcon);
DataSet DS = new DataSet();
SqlDataAdapter sqlDA = new SqlDataAdapter(sqlcmd);
sqlcon.Open();
sqlDA.Fill(DS, "Table_1");
dataGridView1.DataSource = DS;
dataGridView1.DataMember = "Table_1";
sqlcon.Close();

danialafshari
شنبه 01 آذر 1393, 19:24 عصر
با سلام
در این مورد زیاد بحث شده
ببینید کاربر که در یک زمان نیاز به این همه اطلاعات نداره !
بهتره فیلتر انجام بدید تا اطلاعاتی به کاربر نمایش داده بشه که نیازمندش هست
اگر هم روی همین کار پافشاری دارید می تونید datagrid رو صفحه بندی کنید که سورسش در سایت موجوده
البته به بهینه بودن جدول ها هم مربوط میشه ولی من با کدی که در بالا میبینم ظاهراً برای نمونه هست و نکته ی بالا کافیه
موفق باشید

abdullah20
شنبه 01 آذر 1393, 19:26 عصر
اصلا کد شمابه کنار
خوب500 هزر رکورد طبیعی است طول بکشه البته شاید با تغییر کدنویسی مثلا استفاده از استور پروسیجر زمان تا حدی بیاد پایین ولی لود کردن این تعداد رکورد زمانبر است

Mani_rf
یک شنبه 02 آذر 1393, 09:33 صبح
اصلا کد شمابه کنار
خوب500 هزر رکورد طبیعی است طول بکشه البته شاید با تغییر کدنویسی مثلا استفاده از استور پروسیجر زمان تا حدی بیاد پایین ولی لود کردن این تعداد رکورد زمانبر است

500،000 رکورد برای SQLServer تعداد زیادی نیست، اصلا زیاد نیست. کند شدن دلایل بسیار زیادی داره که باید بررسی بشه و معمولا بیشتر به طراحی غلط برمیگرده. در صورتی که تعداد رکورد ها زیاد باشه باید از ایندکس گذاری ها استفاده بشه.

hamid_hr
یک شنبه 02 آذر 1393, 09:39 صبح
500،000 رکورد برای SQLServer تعداد زیادی نیست


زیاد نیس ولی


داخل datagridview نمایش داده بشن که جمعاً در حدود 8 ثانیه میشه
نمایشش با گرید ویو زمان بر هست

Mani_rf
یک شنبه 02 آذر 1393, 09:50 صبح
توی برنامه نویسی ویندوز یکی از مسائلی که بسیار زیاد اهمیت داره مدیریت منابع هست. لود کردن این تعداد رکورد تو گرید کاملا با این مفهوم مقایرت داره. لود کردن این تعداد یعنی اشغال کردن مقدار زیادی از رم و در نتیجه کند شدن برنامه و سیستم عامل، کاربر هرگز به این تعداد رکورد به صورت هم زمان نیاز نداره اگر به هر دلیلی نیاز به این تعداد رکورد پیدا بشه از پیجینگ ها باید استفاده بشه.