मैं जाते ही इसमें सुधार करूंगा। MySQL आपकी इच्छाओं का सम्मान करेगा, यहां तक कि आपको जाते ही अपने आप को पैर में गोली मारने की अनुमति देगा:
create table t9
(
id int auto_increment primary key,
thing varchar(20) not null,
key(thing),
unique key (thing),
unique key `yet_another` (thing)
);
-- warning 1831 dupe index
show create table t9;
CREATE TABLE `t9` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`thing` varchar(20) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `thing_2` (`thing`),
UNIQUE KEY `yet_another` (`thing`),
KEY `thing` (`thing`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
तो उन सभी सामानों को देखें जिन्हें आपको अपने अप्सर्ट्स के साथ ले जाना है (पढ़ें:अतिरिक्त अनावश्यक इंडेक्स धीमा करें)।
इसलिए यदि आप इसे जितना संभव हो उतना दुबला चाहते हैं, जैसा कि मैंने टिप्पणियों में उल्लेख किया है, तो पहले एफके को चाइल्ड टेबल, संदर्भ में छोड़कर चीजों को खोल दें। पहला। देखें यह उत्तर ।
फिर वर्तमान गैर-अद्वितीय मूल कुंजी छोड़ें:
DROP INDEX index_name ON tbl_name;
फिर माता-पिता में अद्वितीय कुंजी जोड़ें। यह नया संदर्भित है :
CREATE UNIQUE INDEX idxName ON tbl_name (colName);
फिर बच्चों में FK जोड़ें (संदर्भ )
CREATE INDEX idxName ON child_tbl_name (colName);
आप show create table theTableName
. द्वारा प्रमुख नाम प्राप्त कर सकते हैं या SHOW INDEX
द्वारा
. नए नामों के लिए नए नामों का प्रयोग करें, इससे कोई फर्क नहीं पड़ता।
जैसे:
mysql> show index from t9;
+-------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| t9 | 0 | PRIMARY | 1 | id | A | 0 | NULL | NULL | | BTREE | | |
| t9 | 0 | thing_2 | 1 | thing | A | 0 | NULL | NULL | | BTREE | | |
| t9 | 0 | yet_another | 1 | thing | A | 0 | NULL | NULL | | BTREE | | |
| t9 | 1 | thing | 1 | thing | A | 0 | NULL | NULL | | BTREE | | |
+-------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+