ورود

View Full Version : سوال: روش بهتر دسترسی به داده ها



علی فتحی
سه شنبه 29 مهر 1393, 16:47 عصر
سلام و خسته نباشید. دوروش پیوند داده ها توی اکثر برنامه ها دیدم طبق نمونه زیر. یکی در پوشه دیباگ همراه برنامه . یکی هم در پوشه دیتا اس کیو ال.
یه جای دیگه مطرح کردم دوستان عرض کردن در پوشه دیتا بهتره چون اس کیو ال همیشه درحال runingهستش سرعت برنامه میره بالا . ولی بعضی ها فرمودن فرقی نداره در نسخه اکس پرس دیتا کجا قرار بگیره . تو هر کدوم از مسیر ها باشه برنامه اجرا میکنه و تاثیری برسرعت خواندن اطلاعات نداره . ممنون میشم استادان گرامی نظر خودشون را ارائه دهند.


con = new SqlConnection("Server = .\\SQLEXPRESS ; DataBase = DbHotel ; Integrated Security = True");


con.ConnectionString = @"Data Source=.\SQLEXPRESS;
AttachDbFilename='|datadirectory|DbHotel.mdf';
Integrated Security=True;
Connect Timeout=30;
User Instance=True";

هر دو نسخه SQLEXPRESS است.

علی فتحی
سه شنبه 29 مهر 1393, 16:54 عصر
ببخشید پیرو تکمیل سوالم . بنده چون سوال برام پیش اومد اینه از یک فرم استفاده میکنم که دیتا گریدی ویوی داره تعداد 50000پروانه توش نشون داده میشه . هنگام بالا امدن فرم سرعت پایین اومده از efاستفاده میکنم. ایا راهی برای افزایش سرعت وجود داره.فقط برای اولین بار هم اینطوری دیر باز میشه اگر یک بار باز شد دیگه باز کردن فرم فوریه.فرقی با فرم خالی نداره

parvizwpf
سه شنبه 29 مهر 1393, 17:09 عصر
برای بالا آمدن دیتا فکر نکنم لزومی داشته باشه همه دیتا رو لود کنید . میتونید از پیجینگ استفاده کنید.

علی فتحی
سه شنبه 29 مهر 1393, 17:44 عصر
تشکر از لطفتون . پیچینگ چیه . صفحه خاص روزانه رو میفرمایی نه؟

علی فتحی
سه شنبه 29 مهر 1393, 18:15 عصر
دوستان اشاره به صفحه بندی دیتا گرید کردن ممنون میشم اگر روش صفحه بندی با انتی تی فرم ورک رو توضیح بدین

اینکارو خودم کردم ولی زیاد توی سرعت تاثیر نداره چون کل اطلاعات رو فراخوانی میکنه .


DataEntities db = new DataEntities();


int m = int.Parse(textBoxX1.Text);

dataGridView1.DataSource = db.vorod.Where(c => c.karv == m);

علی فتحی
سه شنبه 29 مهر 1393, 19:45 عصر
اینم پیدا کردم جالبه ولی 5 رکود اول جدول رو نشون میده . برای 5 رکود اخر چ کار باید کرد؟
SELECT TOP (5) kod, name, famil
FROM dbo.Table1

plus
سه شنبه 29 مهر 1393, 23:49 عصر
برای بدست آوردن رکورد n ام باید رکوردهای 1 تا n واکشی بشن.یعنی اینکه اگه رکورد آخر رو میخواین باید ابتدا رکوردها رو از اول تا آخر SELECT کنید البته بعد از SELECT میتونید با گذاشتن شرط، رکورهای اول رو که مورد نظرتون نیست حذف کنید.البته روش های دیگه ای هم هست.
http://beyondrelational.com/modules/2/blogs/28/posts/10434/sql-server-server-side-paging-with-rownumber-function.aspx
http://social.technet.microsoft.com/wiki/contents/articles/23811.paging-a-query-with-sql-server.aspx

jir_jir_jir
چهارشنبه 30 مهر 1393, 01:29 صبح
دوستمون راست می گه کلا کار اشتباهی که 5000 تا رکورد رو با هم لود کنی چون کاربر استفاده کننده هم که تو یه زمان با 5000 تا رکورد کار نداره می تونی از پیجینگ استفاده کنی
البیته روشهای ابتکاری دیگه هم هست

علی فتحی
چهارشنبه 30 مهر 1393, 02:06 صبح
تشکر شاید افراد دیگری به این تاپیک مراجعه کنن حل شد یک ویو ساختم گرید رو از اون ویو میگرم . اینم کد تقدیم به دوستان 20 رکود اخر رو برمیگردونه

SELECT TOP (2) PERCENT MAX(kod) AS Expr1, name, famil, meli
FROM dbo.Table1
GROUP BY name, famil, meli
ORDER BY Expr1 DESC

Mahmoud.Afrad
چهارشنبه 30 مهر 1393, 19:02 عصر
صفحه بندی دیتاگریدویو (datagrid) توسط LINQ (http://barnamenevis.org/showthread.php?471222-%D8%B5%D9%81%D8%AD%D9%87-%D8%A8%D9%86%D8%AF%DB%8C-%D8%AF%DB%8C%D8%AA%D8%A7%DA%AF%D8%B1%DB%8C%D8%AF%D 9%88%DB%8C%D9%88-%28datagrid%29-%D8%AA%D9%88%D8%B3%D8%B7-LINQ)