मेरे पास Entity Framework Code First का उपयोग करके कुछ डेटाबेस बनाए गए हैं; एप्लिकेशन काम कर रहे हैं और सामान्य तौर पर मैं पहले कोड क्या करता है के साथ बहुत खुश हूँ। मैं एक प्रोग्रामर पहले, और एक डीबीए दूसरा, आवश्यकता से। मैं C # में आगे वर्णन करने के लिए DataAttributes के बारे में पढ़ रहा हूं कि मैं क्या करना चाहता हूं डेटाबेस; और मेरा प्रश्न यह है कि मैं nvarchar(max)
अपनी तालिका में इन तारों के होने से क्या दंड खाऊंगा (नीचे उदाहरण देखें)?
इस विशेष तालिका में कई स्तंभ हैं; C # में उन्हें इस प्रकार परिभाषित किया गया है:
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public string Name { get; set; }
public string Message { get; set; }
public string Source { get; set; }
public DateTime Generated { get; set; }
public DateTime Written { get; set; }
मैं नाम, स्रोत, उत्पन्न और लिखित के आधार पर क्वेरी और / या सॉर्ट करने की अपेक्षा करता हूं। मुझे नाम और स्रोत 0-50 चरित्र की लंबाई में होने की उम्मीद है, कभी-कभी 150 तक। मैं इस तालिका को बहुत छोटे (<100k पंक्तियों) शुरू करने की उम्मीद करता हूं, लेकिन समय के साथ काफी बढ़ जाता है (> 1 मीटर पंक्तियां)। जाहिर तौर पर संदेश छोटा या बड़ा हो सकता है, और संभवतः इसके खिलाफ नहीं होगा।
क्या मैं जानना चाहता हूं, क्या मेरे नाम और स्रोत स्तंभों के लिए एक प्रदर्शन हिट है, nvarchar(max)
जब मैं उनसे 150 वर्णों से बड़ा होने की उम्मीद नहीं करता?
varchar(max)
हर जगह का उपयोग आपके प्रदर्शन को नुकसान पहुँचाता है - ऐसा मत करो! उचित डेटाटिप्स का उपयोग करें - varchar(max)
केवल तभी उपयोग करें जब आपको वास्तव में 8000 से अधिक वर्णों की आवश्यकता हो! (मैंने किसी व्यक्ति का नाम या ई-मेल इतने लंबे समय तक नहीं देखा है!) - देखें क्या है VARCHAR (n) प्रयोग का बिंदु? अधिक जानकारी के लिए
[MaxLength]
या तो[StringLength]
विशेषताओं को लागू करने की आवश्यकता है । बहुत व्यापक स्तंभों के कुछ अतिरिक्त संभावित नकारात्मक कारकों का उल्लेख यहाँ @ पॉलवाइट के उत्तर में किया गया है