अब मैं अपने प्रोजेक्ट के इस बिंदु पर हूं कि मुझे अपना डेटाबेस (ओरेकल) डिजाइन करने की आवश्यकता है। आमतौर पर स्थिति और देशों तालिकाओं के लिए मैं एक अंकीय प्राथमिक कुंजी का उपयोग नहीं करते, उदाहरण के लिएसंख्या वीएस वर्कर (2) प्राथमिक कुंजी
STATUS (max 6)
AC --> Active
DE --> Deleted
COUNTRIES (total 30)
UK --> United Kingdom
IT --> Italy
GR --> Greece
इन तालिकाओं स्थिर, आवेदन के माध्यम से अपडेट नहीं हैं और यह इतना है कि भविष्य में परिवर्तन होने की अनुमान नहीं कर रहा है टेबल में अद्यतन समस्याओं का कोई मौका नहीं है जो इन मानों को विदेशी कुंजी के रूप में उपयोग करेगा।
आवेदन की स्थिति और देश (एक बार से अधिक जैसे मूल देश, गंतव्य देश) का उपयोग करेगा की मुख्य तालिका और यह अनुमान है कि 600000 पंक्तियों प्रति वर्ष जोड़ दिया जाएगा
तो मेरे सवाल है, होगा इन VARCHAR (2) 3 टेबल में शामिल होने पर पूछताछ करते समय कुंजी में प्रदर्शन का असर होगा। क्या पहले दूसरे की तुलना में काफी धीमी होगी?
SELECT m.*,
s.status_name,
c.country_name
FROM main m, status s, countries c
WHERE m.status_cd = s.status_cd
AND m.country_cd = c.country_cd
AND m.status_cd = 'AC'
AND m.country_cd = 'UK'
SELECT m.*,
s.status_name,
c.country_name
FROM main m, status s, countries c
WHERE m.status_cd = s.status_cd
AND m.country_cd = c.country_cd
AND m.status_cd = 1
AND m.country_cd = 2
स्पष्टीकरण:
स्थिति बाइनरी ("अधिकतम 6" तालिका नाम के आगे) नहीं है। मान शायद होंगे:
* active
* deleted
* draft
* send
* replaced
और हमें उपयोगकर्ता को डीकोडेड मान प्रदर्शित करने की आवश्यकता है, इसलिए हमें नामों की आवश्यकता है।
क्या आप ओरेकल में VARCHAR2 या VARCHAR (2) का उपयोग कर रहे हैं? यदि ओरेकल VARCHAR2 का उपयोग कर रहे हैं, तो कोष्ठक भ्रामक हैं। यदि वचर (2), तो क्यों नहीं (2) जो आमतौर पर अधिक कुशल है। –