static analysis - Measuring the complexity of SQL statements -


अधिकांश प्रोग्रामिंग भाषाओं में तरीकों की जटिलता को स्थिर स्रोत कोड विश्लेषक के साथ साइक्लाइमेटिक जटिलता में मापा जा सकता है। क्या एक एसक्यूएल क्वेरी की जटिलता को मापने के लिए समान मीट्रिक है?

इसे वापस करने के लिए एक क्वेरी लेते समय को मापने के लिए काफी आसान है, लेकिन क्या होगा अगर मैं यह जानना चाहता हूं कि जटिल कैसे प्रश्न है?

[संपादित करें / नोट] निष्पादन योजना प्राप्त करते समय उपयोगी होता है, जो इस मामले में पहचानने की कोशिश नहीं कर रहा है। मुझे पता नहीं है कि क्वेरी के निष्पादित करने के लिए सर्वर के लिए कितना मुश्किल है, मैं एक मीट्रिक की खोज कर रहा हूं जो बताता है कि डेवलपर के लिए क्वेरी लिखना कितना मुश्किल था, और यह दोष कैसे शामिल है।

[संपादित करें / नोट 2] बेशक, ऐसे समय होते हैं जब जटिलता को मापना उपयोगी नहीं होता है, लेकिन ऐसा समय भी होता है जब यह होता है। उस विषय पर एक और चर्चा के लिए, देखें।

सॉफ्टवेयर जटिलता के आम उपायों में शामिल हैं (कैसे का एक उपाय नियंत्रण प्रवाह जटिल है) और (जटिल गणित का एक उपाय है)।

एक एसक्यूएल क्वेरी में "नियंत्रण प्रवाह" क्वेरी में "और" और "या" ऑपरेटरों से संबंधित है।

"कम्प्यूटेशनल जटिलता" ऑपरेटरों से संबंधित है जैसे कि SUM या अंतर्निहित जॉन्स।

एक बार जब आप तय करते हैं कि एक एसक्यूएल क्वेरी के वाक्यविन्यास के प्रत्येक इकाई को कैसे वर्गीकृत करें, "नियंत्रण प्रवाह" या "अभिकलन", आप सीक्लालैमेटिक या हॉलस्टेड उपायों की सीधा कल्पना कर सकते हैं।

I लगता है कि पूरी तरह अप्रासंगिक है। जटिलता उपायों का उद्देश्य व्यक्ति को क्वेरी को समझने के लिए कितना कठिन है, यह नहीं है कि यह कितना कुशलतापूर्वक मूल्यांकन किया जा सकता है।

इसी तरह, डीडीएल क्या कहता है या क्या विचार शामिल हैं या नहीं shouldn ऐसी जटिलता उपायों में शामिल नहीं किया जाएगा इन मैट्रिक्स के पीछे की धारणा यह है कि एक प्रयोग-अमूर्त के अंदर मशीनरी की जटिलता दिलचस्प नहीं है, जब आप इसे केवल आह्वान करते हैं, क्योंकि संभवतः कि संक्षेप सांकेतिक शब्दों में बदलनेवाला द्वारा अच्छी तरह से कुछ समझ में आता है। यही कारण है कि Halstead और चक्रवर्ती उपायों में उनकी गिनती में उपनियमों को शामिल नहीं किया जाता है, और मुझे लगता है कि आप एक अच्छा मामला बना सकते हैं जो विचारों और डीडीएल की जानकारी उन "इनकॉक्ड" सारिणीकरण हैं।

अंत में, बिल्कुल सही या ये जटिलता संख्याओं को कितनी ग़लत तरह से गलत है, इससे कोई फर्क नहीं पड़ता, जब तक वे जटिलता के बारे में कुछ सच्चाई को प्रतिबिंबित करते हैं और आप उन्हें एक दूसरे के सापेक्ष तुलना कर सकते हैं। इस प्रकार आप चुन सकते हैं कि कौन से एसक्यूएल टुकड़े सबसे जटिल हैं, इस प्रकार उन सभी को सॉर्ट करें, और अपने परीक्षण का ध्यान उन सबसे जटिल लोगों पर केंद्रित करें।


Comments

Popular posts from this blog

c# - sqlDecimal to decimal clr stored procedure Unable to cast object of type 'System.Data.SqlTypes.SqlDecimal' to type 'System.IConvertible' -

Calling GetGUIThreadInfo from Outlook VBA -

Obfuscating Python code? -