Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में एक ही कॉलम पर एकाधिक UNIQUE कंस्ट्रेंट जोड़ने का प्रभाव

यदि किसी कॉलम पर एकाधिक बार UNIQUE कंस्ट्रेंट जोड़ा जाए, तो MySQL हर बार उस कॉलम पर एक नया यूनिक इंडेक्स बना देता है।

उदाहरण

employee टेबल में empid पर पहले से UNIQUE कंस्ट्रेंट है:

mysql> DESCRIBE employee;
+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| empid      | int(11)     | YES  | UNI | NULL    |       |
| first_name | varchar(20) | YES  |     | NULL    |       |
| last_name  | varchar(20) | YES  |     | NULL    |       |
+------------+-------------+------+-----+---------+-------+

पहला SHOW INDEX

mysql> SHOW INDEX FROM employee\G
Key_name: empid
Seq_in_index: 1
Column_name: empid
Non_unique: 0
-- 1 इंडेक्स

दूसरा UNIQUE कंस्ट्रेंट जोड़ें

mysql> ALTER TABLE employee ADD UNIQUE(empid);
Query OK, 0 rows affected (0.21 sec)

दूसरा SHOW INDEX

mysql> SHOW INDEX FROM employee\G
*************************** 1. row ***************************
Key_name: empid
*************************** 2. row ***************************
Key_name: empid_2
-- अब 2 इंडेक्स!

तीसरा UNIQUE कंस्ट्रेंट जोड़ें

mysql> ALTER TABLE employee ADD UNIQUE(empid);
Query OK, 0 rows affected (0.30 sec)

mysql> SHOW INDEX FROM employee\G
Key_name: empid
Key_name: empid_2
Key_name: empid_3
-- अब 3 इंडेक्स!

परिणाम सारांश

UNIQUE जोड़ा गयाइंडेक्स नामकुल इंडेक्स
1ली बारempid1
2री बारempid_22
3री बारempid_33

निहितार्थ

  • स्टोरेज ओवरहेड: प्रत्येक इंडेक्स डिस्क स्पेस और मेमोरी उपयोग करता है
  • राइट परफॉरमेंस: INSERT/UPDATE/DELETE धीमे होते हैं (प्रत्येक इंडेक्स अपडेट होता है)
  • कोई लाभ नहीं: डुप्लिकेट रोकने के लिए एक इंडेक्स पर्याप्त है
  • भ्रम: SHOW CREATE TABLE में एकाधिक इंडेक्स दिखते हैं

सफाई

-- अतिरिक्त इंडेक्स हटाएं
ALTER TABLE employee DROP INDEX empid_2;
ALTER TABLE employee DROP INDEX empid_3;

निष्कर्ष: एक ही कॉलम पर एकाधिक UNIQUE कंस्ट्रेंट जोड़ने से बचें - यह संसाधन बर्बादी है।

  1. - MySQL में एक ही INSERT से कई पंक्तियाँ एक साथ कैसे डालें?

    मल्टी-रो INSERT सिंटैक्स insert into yourTableName values (val1, val2, ...), (val1, val2, ...), (val1, val2, ...); उदाहरण (4,Carol,Taylor,20); परिणाम +------+------------+-----------+------+ | id | first_name | last_name | age | +------+------------+-----------+------+ | 1 | John

  1. - C प्रोग्राम में हेडर फाइल को दो बार शामिल करने पर क्या होता है?

    हेडर फाइल और #include निर्देश C में हेडर फाइल्स (.h) पूर्वनिर्धारित फंक्शन्स, मैक्रोज़ और घोषणाएँ रखती हैं। #include प्रीप्रोसेसर निर्देश इन्हें प्रोग्राम में सम्मिलित करता है। दो बार शामिल करने पर व्यवहार जब एक ही हेडर फाइल को दो बार #include किया जाता है, तो दूसरी बार इसे अनदेखा (ignore) कर दिया

  1. - C# में लिस्ट को सॉर्ट करने का मेथड क्या है?

    C# में लिस्ट को सॉर्ट करने के लिए Sort() मेथड का उपयोग करें।सबसे पहले एक लिस्ट बनाएं:List<string> myList = new List<string>();अब एलिमेंट्स जोड़ें:myList.Add("Audi"); myList.Add("BMW"); myList.Add("Chevrolet"); myList.Add("Hyundai");लिस्ट को सॉर्ट क