मेरे पास सी # में लिखा गया एक विंडोज़ एप्लिकेशन है जिसे डेटाबेस से 250,000 पंक्तियों को लोड करने की आवश्यकता है और "जैसे ही आप टाइप करते हैं" सुविधा प्रदान करते हैं जिसका अर्थ है जैसे उपयोगकर्ता टेक्स्ट में कुछ टाइप करता है बॉक्स, एप्लिकेशन को like
का उपयोग करके सभी 250,000 रिकॉर्ड्स (जो बीटीडब्ल्यू, प्रत्येक पंक्ति 1000 वर्णों वाला सिंगल कॉलम) खोजना चाहते हैं और पाए गए रिकॉर्ड्स प्रदर्शित करते हैं।बड़े ग्रंथों की विशाल सूची खोजने के लिए सबसे तेज़ तरीका
दृष्टिकोण मैं पीछा किया गया था:
आवेदन भार 1- सब एक टाइप किया List<EmployeeData>
while (objSQLReader.Read())
{
lstEmployees.Add(new EmployeesData(
Convert.ToInt32(objSQLReader.GetString(0)),
objSQLReader.GetString(1),
objSQLReader.GetString(2)));
}
2- TextChanged घटना में में रिकॉर्ड, LINQ
का उपयोग करना, मैं खोज (नियमित अभिव्यक्ति के संयोजन के साथ) और IEnumerable<EmployeesData>
को एक सूची दृश्य में संलग्न करें जो वर्चुअल मोड में है।
String strPattern = "(?=.*wood*)(?=.*james*)";
IEnumerable<EmployeesData> lstFoundItems = from objEmployee in lstEmployees
where Regex.IsMatch(Employee.SearchStr, strPattern, RegexOptions.IgnoreCase)
select objEmployee;
lstFoundEmployees = lstFoundItems;
3- पुनर्प्राप्तिवर्तनीय इटिम घटना आइटम को प्रदर्शित करने के लिए ListView में आइटम प्रदर्शित करने के लिए संभाली जाती है।
e.Item = new ListViewItem(new String[] {
lstFoundEmployees.ElementAt(e.ItemIndex).DateProjectTaskClient,
e.ItemIndex.ToString() });
हालांकि lstEmployees
एसक्यूएल सर्वर से सूची लोड करने, TextChanged पर खोज करने के लिए के लिए अपेक्षाकृत तेज (1.5 सेकंड) भरी हुई है, यह LINQ का उपयोग कर खोज करने के लिए 7 से अधिक मिनट लगते हैं। LIKE
खोज करके सीधे SQL सर्वर के माध्यम से खोज 7 सेकंड से कम समय लेता है।
क्या मैं गलत यहाँ कर रहा हूँ? मैं इस खोज को तेज़ी से कैसे बना सकता हूं (अधिक 2 सेकंड नहीं)? यह मेरे ग्राहक से एक आवश्यकता है। तो, किसी भी मदद की अत्यधिक सराहना की है। कृपया मदद करें ...
@RamiShareef, मैं यह मानता हूं कि यह प्रश्न नियमित अभिव्यक्तियों के बारे में है, (वास्तव में किसी भी चीज़ से अधिक), इसलिए कृपया रेगेक्स टैग को न हटाएं। –
क्या आपको इसे स्वत: पूर्ण टेक्स्टबॉक्स की तरह चाहिए? – JayOnDotNet
हाँ .. एक स्वत: पूर्ण टेक्स्ट बॉक्स की तरह, लेकिन परिणामों को एक सूची बॉक्स या सूचीदृश्य में अलग-अलग प्रदर्शित किया जाना चाहिए ... – user1130862