जब हम एक ही कॉलम पर एक से अधिक बार UNIQUE बाधा जोड़ेंगे तो MySQL उस कॉलम पर कई बार इंडेक्स बनाएगा, हमने 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 | | +------------+-------------+------+-----+---------+-------+ 3 rows in set (0.12 sec)
अब, जब हम SHOW INDEX क्वेरी चलाते हैं, तो यह इंडेक्स का नाम देता है, केवल एक इंडेक्स, कॉलम 'एम्पिड' पर बनाया गया है।
mysql> Show index from employee\G; *************************** 1. row *************************** Table: employee Non_unique: 0 Key_name: empid Seq_in_index: 1 Column_name: empid Collation: A Cardinality: 0 Sub_part: NULL Packed: NULL Null: YES Index_type: BTREE Comment: Index_comment: 1 row in set (0.00 sec)
निम्नलिखित क्वेरी की मदद से हमने उसी कॉलम 'एम्पिड' पर एक और UNIQUE बाधा जोड़ी -
mysql> Alter table employee ADD UNIQUE(empid); Query OK, 0 rows affected (0.21 sec) Records: 0 Duplicates: 0 Warnings: 0
अब, जब हम SHOW INDEX क्वेरी चलाते हैं, तो यह इंडेक्स का नाम देता है, दो इंडेक्स 'empid' और 'empid_2', कॉलम 'empid' पर बनाए गए हैं।
mysql> Show index from employee12\G; *************************** 1. row *************************** Table: employee Non_unique: 0 Key_name: empid Seq_in_index: 1 Column_name: empid Collation: A Cardinality: 0 Sub_part: NULL Packed: NULL Null: YES Index_type: BTREE Comment: Index_comment: *************************** 2. row *************************** Table: employee Non_unique: 0 Key_name: empid_2 Seq_in_index: 1 Column_name: empid Collation: A Cardinality: 0 Sub_part: NULL Packed: NULL Null: YES Index_type: BTREE Comment: Index_comment: 2 rows in set (0.00 sec)
निम्नलिखित क्वेरी की मदद से हमने उसी कॉलम 'एम्पिड' पर एक और UNIQUE बाधा जोड़ी -
mysql> Alter table employee ADD UNIQUE(empid); Query OK, 0 rows affected (0.21 sec) Records: 0 Duplicates: 0 Warnings: 0
अब, जब हम SHOW INDEX क्वेरी चलाते हैं, तो यह इंडेक्स का नाम देता है, तीन इंडेक्स 'empid' और 'empid_2', 'empid_3' कॉलम 'empid' पर बनाए जाते हैं।
mysql> Alter table employee ADD UNIQUE(empid); Query OK, 0 rows affected (0.30 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> Show index from employee\G; *************************** 1. row *************************** Table: employee Non_unique: 0 Key_name: empid Seq_in_index: 1 Column_name: empid Collation: A Cardinality: 0 Sub_part: NULL Packed: NULL Null: YES Index_type: BTREE Comment: Index_comment: *************************** 2. row *************************** Table: employee Non_unique: 0 Key_name: empid_2 Seq_in_index: 1 Column_name: empid Collation: A Cardinality: 0 Sub_part: NULL Packed: NULL Null: YES Index_type: BTREE Comment: Index_comment: *************************** 3. row *************************** Table: employee Non_unique: 0 Key_name: empid_3 Seq_in_index: 1 Column_name: empid Collation: A Cardinality: 0 Sub_part: NULL Packed: NULL Null: YES Index_type: BTREE Comment: Index_comment: 3 rows in set (0.00 sec)
इस अर्थ में, हम कह सकते हैं कि MySQL कॉलम संख्या पर अद्वितीय अनुक्रमणिका बनाएगा जब हमने उस कॉलम पर UNIQUE बाधा को जोड़ा।