मुझे किसी कीवर्ड के आधार पर कुछ डेटा लाने की आवश्यकता है, क्वेरी का परीक्षण 100% सटीक है, लेकिन समस्या यह है कि reader
की लोडिंग बहुत धीमी है। मैंने इस क्वेरी को उस स्थान से बदलने की कोशिश की है जिसमें inner join
एस नहीं है और लोडिंग बहुत तेज थी। तो मुझे आश्चर्य है, क्योंकि परिणामस्वरूप मैं केवल एक कॉलम का चयन कर रहा हूं, डेटाटेबल.लोड() इतना समय क्यों लेता है? क्या यह SQLite
का ExecuteReader
है जो पूरे परिणाम लोड करता है न केवल एक कॉलम?डेटाटेबल रीडर लोडिंग बहुत धीमी है
डेटाटेबल का उपयोग करने से पहले, प्रत्येक reader.Read()
निष्पादित करने का औसत समय 7 सेकंड था। मुझे लगता है कि इस SQLite की वजह से एक प्रकृति और जुड़ जाता है की बड़ी संख्या होता
_database.Connect();
var selectCommand = new SQLiteCommand(
@"SELECT A.ID AS MY_ID FROM MD
INNER JOIN TMD ON MD.ID = TMD.ID_MD
INNER JOIN TR ON TR.ID = TMD.ID_TR
INNER JOIN P ON P.ID = TR.ID_P
INNER JOIN DP ON DP.ID_P = P.ID
INNER JOIN CD ON CD.ID = DP.ID_CD
WHERE CD.DESC = @desc"
);
selectCommand.Parameters.AddWithValue("@desc", value);
using (DbDataReader reader = _database.ExecuteQuery(selectCommand))
{
DataTable data = new DataTable("MyData");
data.Load(reader);
}
_database.Disconnect();
ऐसा लगता है कि आपकी क्वेरी बस धीमी है। क्या आपकी टेबलों तक पहुंचने का कोई अलग तरीका है कि आपको इतना से जुड़ने की ज़रूरत नहीं है? – Tejs
मुझे पता था कि यह चोट पहुंचाएगा .. दुर्भाग्य से हमें फ़ील्ड में से किसी एक के आधार पर 2 टेबल कनेक्ट करने की आवश्यकता है। मौजूदा डीबी स्कीमा को देखते हुए ये जुड़ना उनके बीच एकमात्र कनेक्शन है। – iCantSeeSharp
'_डेटाबेस' क्या है और इसमें 'कनेक्ट' और' डिस्कनेक्ट 'जैसी विधियां क्यों हैं? पहिया को पुन: पेश न करें। आपको अपने कनेक्शन के लिए 'उपयोग-कथन' का भी उपयोग करना चाहिए ताकि यह सुनिश्चित किया जा सके कि इसे जितनी जल्दी हो सके "बंद" हो। क्या यह एएसपी.नेट जैसे बहुमत वाले वातावरण है? –