PDA

View Full Version : زمان طولانی خواندن از جدول



ji ming u
سه شنبه 25 بهمن 1390, 10:47 صبح
سلام دوستان
یه جدولی دارم که اطلاعاتش را توی یه دیتا گرید نمایش میدهم
جدول را وقتی 280 رکورد داشت تست کردم حدود 40 ثانیه طول میکشه تا در دیتا گرید نشون بده
برای نشون دادن از کد زیر استفاده میکنم
sqladap.SelectCommand.CommandText = string.Format("select *from table_incom ");
DataTable date_ta = newDataTable();
sqladap.Fill(date_ta);
dataGridView1.DataSource = date_ta;

مشکل از چیه؟

Galawij
سه شنبه 25 بهمن 1390, 11:15 صبح
سلام،
بهتره برای پر کردن گریدها از SP استفاده کنید و در داخل روال نیز سعی کنید رکوردها را صفحه بندی کنید.
از Select * from استفاده نکنید و فقط ستون های را نمایش بدید که در خروجی به آنها نیاز دارید.

ji ming u
سه شنبه 25 بهمن 1390, 11:18 صبح
سلام،
بهتره برای پر کردن گریدها از SP استفاده کنید و در داخل روال نیز سعی کنید رکوردها را صفحه بندی کنید.
از Select * from استفاده نکنید و فقط ستون های را نمایش بدید که در خروجی به آنها نیاز دارید.

میشه یه کمی در مورد sp توضیح بدی؟

Galawij
سه شنبه 25 بهمن 1390, 11:23 صبح
SP ها قبلاً در این لینک (http://barnamenevis.org/showthread.php?296719-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-SP) توضیح داده شده اند.
ولی در مورد Paging یک مثال براتون می ذارم:

ALTER PROCEDURE [dbo].[SPS_Labs](@PageNumber SMALLINT,@PageSize SMALLINT)
SELECT*
FROM(
SELECTROW_NUMBER()over (ORDERBY IdLab)AS RowNum,IdLab, LabName, Manager, LabPhone, LabAddress, LabFax, WebSite
FROM dbo.TbLabs
)Result WHERE (RowNum >@PageSize *(@pageNumber - 1)AND RowNum <=(@PageSize * @pageNumber))

ji ming u
سه شنبه 25 بهمن 1390, 11:29 صبح
SP ها قبلاً در این لینک (http://barnamenevis.org/showthread.php?296719-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-SP) توضیح داده شده اند.
ولی در مورد Paging یک مثال براتون می ذارم:

ALTER PROCEDURE [dbo].[SPS_Labs](@PageNumber SMALLINT,@PageSize SMALLINT(
SELECT *
FROM(
SELECT ROW_NUMBER() over (ORDER BY IdLab)AS RowNum,IdLab, LabName, Manager, LabPhone, LabAddress, LabFax, WebSite
FROM dbo.TbLabs
)Result WHERE (RowNum >@PageSize * (@pageNumber - 1) AND RowNum <= (@PageSize * @pageNumber))




مهندس کد زیری قبلا من برای خواندن از دیتا بیس و نوشتن در دیتا بیس استفاده میکنم
حالا با روش sp چطوری بنویسم
sqladap.SelectCommand.CommandText = string.Format("select *from table_incom ");
DataTable date_ta = newDataTable();
sqladap.Fill(date_ta);
dataGridView1.DataSource = date_ta

Galawij
سه شنبه 25 بهمن 1390, 11:37 صبح
روش های برنامه نویسی متفاوته!
من از LINQ برای اتصال به بانک استفاده می کنم. در تالار #C زودتر به نتیجه می رسید(فکر نمی کنم این کدها کمکی به شما بکنه چون کامل نیست!).

long? RowCount = 0;
if (PageNumber == 0) PageNumber = 1;
WorkDataContext db = newWorkDataContext();
var q = db.SPS_ContractShiftType(ClassIdContract.GetId(), PageNumber, PageSize, 0, ref RowCount, ref errormes, ref ErrorNum);
gridView.DataSource = q;
gridView.DataBind(); ....

in_chand_nafar
سه شنبه 25 بهمن 1390, 11:58 صبح
دوست عزیز در جدول شما چه نوع فیلدهایی وجود دارد
آیا فیلدهایی از نوع باینری و... دارید (مهم است جواب این رو بنویس) اگر دارید Select خود را طوری بنویسید که به آن فیلد نیاز پیدا نکنید Select F1,F2,... from table
در ضمن Select خود را در SQL Server اجرا و Plane اجرایی اون رو ذخیره کنید و در تاپیک برای بررسی Attach کنید
ممکن است با ایجاد ایندکس ، Rebuild Index و... مشکل شما حل شود
البته نیاز به بررسی دارد 280رکورد برای SQL چیزی نیست منتها باید اصول ,... موقع واکشی رعایت شود