Uygulamalarımızda büyük verilerle çalışıyorsak performans bir kat daha önem kazanmaktadır. Bu yüzden uygulamalarımızda ki ağırlığı dağıtmamız doğru bir yaklaşım olacaktır. Örneğin sayfanızda yer alan gridde (tablo) tüm veriler yerine sadece gerektiği kadarını gösterebilirsiniz. Bu işlem için aşağıda ki kod örneğini inceleyebilirsiniz.
private string PrepareSelectQueryWithPaging(string baseQuery, string where, string orderByColumn,string orderSort,int pageNum, int rowsPerPage)
{
var result = string.Empty;
try
{
baseQuery = PrepareBaseQueryWithWhere(baseQuery,where);
var orderQuery = string.Format(" ORDER BY {0} {1}", orderByColumn, orderSort);
result =string.Format(@"declare @rowsPerPage as bigint;
declare @pageNum as bigint;
set @rowsPerPage={0};
set @pageNum={1};
With SQLPaging As (
Select Top(@rowsPerPage * @pageNum) ROW_NUMBER() OVER ({2})
as resultNum, *
FROM ({3}) as z )
select * from SQLPaging with (nolock) where resultNum > ((@pageNum - 1) * @rowsPerPage)", rowsPerPage, pageNum, orderQuery,baseQuery);
}
catch (Exception e)
{
}
return result;
}
private string PrepareBaseQueryWithWhere(string baseQuery, string where)
{
if (!string.IsNullOrEmpty(where))
{
baseQuery = string.Format("{0} WHERE {1}", baseQuery, where);
}
return baseQuery;
}
private string PrepareSelectQueryWithPaging(string baseQuery, string where, string orderByColumn,string orderSort,int pageNum, int rowsPerPage)
{
var result = string.Empty;
try
{
baseQuery = PrepareBaseQueryWithWhere(baseQuery,where);
var orderQuery = string.Format(" ORDER BY {0} {1}", orderByColumn, orderSort);
result =string.Format(@"declare @rowsPerPage as bigint;
declare @pageNum as bigint;
set @rowsPerPage={0};
set @pageNum={1};
With SQLPaging As (
Select Top(@rowsPerPage * @pageNum) ROW_NUMBER() OVER ({2})
as resultNum, *
FROM ({3}) as z )
select * from SQLPaging with (nolock) where resultNum > ((@pageNum - 1) * @rowsPerPage)", rowsPerPage, pageNum, orderQuery,baseQuery);
}
catch (Exception e)
{
}
return result;
}
private string PrepareBaseQueryWithWhere(string baseQuery, string where)
{
if (!string.IsNullOrEmpty(where))
{
baseQuery = string.Format("{0} WHERE {1}", baseQuery, where);
}
return baseQuery;
}
Comments