आप एक संक्षिप्त जवाब अपने संदेह को, यदि आप LINQ पर (एसक्यूएल 2005/2008 डेटाबेस सर्वर के रूप में) के साथ skip(n).take(m)
तरीकों पर अमल आपकी क्वेरी देने के लिए कोशिश कर रहा होगा Select ROW_NUMBER() Over ...
कथन का उपयोग करके, एसक्यूएल इंजन में किसी भी तरह से सीधे पेजिंग है।
आपको एक उदाहरण देते हुए मैं एक db तालिका mtcity
कहा जाता है और मैं निम्न क्वेरी (काम के साथ-साथ साथ LINQ संस्थाओं के लिए) ने लिखा:
using (DataClasses1DataContext c = new DataClasses1DataContext())
{
var query = (from MtCity2 c1 in c.MtCity2s
select c1).Skip(3).Take(3);
//Doing something with the query.
}
परिणामी क्वेरी होगा:
SELECT [t1].[CodCity],
[t1].[CodCountry],
[t1].[CodRegion],
[t1].[Name],
[t1].[Code]
FROM (
SELECT ROW_NUMBER() OVER (
ORDER BY [t0].[CodCity],
[t0].[CodCountry],
[t0].[CodRegion],
[t0].[Name],
[t0].[Code]) AS [ROW_NUMBER],
[t0].[CodCity],
[t0].[CodCountry],
[t0].[CodRegion],
[t0].[Name],
[t0].[Code]
FROM [dbo].[MtCity] AS [t0]
) AS [t1]
WHERE [t1].[ROW_NUMBER] BETWEEN @p0 + 1 AND @p0 + @p1
ORDER BY [t1].[ROW_NUMBER]
जो एक खिड़की वाली डेटा पहुंच है (बहुत अच्छा, बीटीडब्ल्यू सीयूज बहुत शुरुआत के बाद से डेटा लौटाएगा और जब तक शर्तों को पूरा किया जाता है तब तक तालिका तक पहुंच जाएगा)। यह बहुत ही के समान होगा:
With CityEntities As
(
Select ROW_NUMBER() Over (Order By CodCity) As Row,
CodCity //here is only accessed by the Index as CodCity is the primary
From dbo.mtcity
)
Select [t0].[CodCity],
[t0].[CodCountry],
[t0].[CodRegion],
[t0].[Name],
[t0].[Code]
From CityEntities c
Inner Join dbo.MtCity t0 on c.CodCity = t0.CodCity
Where c.Row Between @p0 + 1 AND @p0 + @p1
Order By c.Row Asc
अपवाद है कि, यह दूसरी क्वेरी क्योंकि यह डेटा का उपयोग विंडो बनाने के लिए विशेष रूप से सूचकांक का उपयोग किया जाएगा LINQ परिणाम की तुलना में तेजी निष्पादित किया जाएगा साथ
; इसका मतलब है, अगर आपको कुछ फ़िल्टरिंग की आवश्यकता है, तो फ़िल्टरिंग इकाई प्रविष्टि (जहां पंक्ति बनाई गई है) में होना चाहिए (या होना चाहिए) और अच्छे प्रदर्शन को बनाए रखने के लिए कुछ इंडेक्स भी बनाए जाने चाहिए।
अब, क्या बेहतर है?
आप अपने तर्क में काफी ठोस कार्यप्रवाह है, तो उचित एसक्यूएल तरह से लागू करने जटिल हो जाएगा। उस मामले में LINQ समाधान होगा।
यदि आप तर्क के उस हिस्से को सीधे एसक्यूएल (संग्रहीत प्रक्रिया में) में कम कर सकते हैं, तो यह बेहतर होगा क्योंकि आप दूसरी क्वेरी को लागू कर सकते हैं जो मैंने आपको दिखाया है (इंडेक्स का उपयोग करके) और एसक्यूएल को उत्पन्न और स्टोर करने की अनुमति दें क्वेरी की निष्पादन योजना (प्रदर्शन में सुधार)।
मुझे लगता है कि यह निर्भर करता है। आप किस ऐप पर काम कर रहे हैं? इसका किस प्रकार का भार होगा? – BuddyJoe
इस उत्तर पर भी एक नज़र डालें: http: // stackoverflow।कॉम/ए/10639172/416996 –
इसे भी देखें http://www.aspsnippets.com/Articles/Custom-Paging-in-ASP.Net-GridView-using-SQL- सर्वर-Stored-Procedure.aspx –