यदि आप यह देखना चाहते हैं कि यह सब क्या है, तो यहां हर चीज का झटका है:
CREATE TABLE `users_partners` (
`uid` int(11) NOT NULL DEFAULT '0',
`pid` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`uid`,`pid`),
KEY `partner_user` (`pid`,`uid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
प्राथमिक कुंजी इस त्वरित संदर्भ तालिका के दोनों स्तंभों पर आधारित है। प्राथमिक कुंजी के लिए अद्वितीय मानों की आवश्यकता होती है।
चलो शुरू करें:
INSERT INTO users_partners (uid,pid) VALUES (1,1);
...1 row(s) affected
INSERT INTO users_partners (uid,pid) VALUES (1,1);
...Error Code : 1062
...Duplicate entry '1-1' for key 'PRIMARY'
INSERT IGNORE INTO users_partners (uid,pid) VALUES (1,1);
...0 row(s) affected
INSERT INTO users_partners (uid,pid) VALUES (1,1) ON DUPLICATE KEY UPDATE uid=uid
...0 row(s) affected
ध्यान दें, ऊपर दिए गए कॉलम को स्वयं के बराबर सेट करके बहुत अधिक अतिरिक्त कार्य सहेजे गए हैं, वास्तव में किसी भी अपडेट की आवश्यकता नहीं है
REPLACE INTO users_partners (uid,pid) VALUES (1,1)
...2 row(s) affected
और अब कुछ एकाधिक पंक्ति परीक्षण:
INSERT INTO users_partners (uid,pid) VALUES (1,1),(1,2),(1,3),(1,4)
...Error Code : 1062
...Duplicate entry '1-1' for key 'PRIMARY'
INSERT IGNORE INTO users_partners (uid,pid) VALUES (1,1),(1,2),(1,3),(1,4)
...3 row(s) affected
कंसोल में कोई अन्य संदेश उत्पन्न नहीं हुए थे, और अब इसमें तालिका डेटा में 4 मान हैं। मैंने (1,1) को छोड़कर सब कुछ डिलीट कर दिया ताकि मैं उसी प्लेइंग फील्ड से टेस्ट कर सकूं
INSERT INTO users_partners (uid,pid) VALUES (1,1),(1,2),(1,3),(1,4) ON DUPLICATE KEY UPDATE uid=uid
...3 row(s) affected
REPLACE INTO users_partners (uid,pid) VALUES (1,1),(1,2),(1,3),(1,4)
...5 row(s) affected
इसलिए यह अब आपके पास है। चूँकि यह सब एक ताज़े टेबल पर किया गया था जिसमें लगभग कोई डेटा नहीं था और न ही उत्पादन में, निष्पादन का समय सूक्ष्म और अप्रासंगिक था। वास्तविक दुनिया के डेटा वाला कोई भी व्यक्ति इसमें योगदान देने के लिए स्वागत से अधिक होगा।