मेरे आवेदन में, मेरे INSERT समय का एक बड़ा हिस्सा ले रहे हैं। मेरे पास मेमोरी (~ 40-50,000) में बड़ी संख्या में ऑब्जेक्ट हैं जो मैं एक तालिका में सम्मिलित करना चाहता हूं।
सैंपल टेबल लेते हैं
CREATE TABLE bill (
id BIGINT(20) PRIMARY KEY,
amount INT(11) DEFAULT 0,
bill_date DATETIME DEFAULT NOW(),
INDEX (bill_date)
) ENGINE=InnoDB
मेरे बैच के आकार के रूप में 3 पंक्तियाँ लेना, निम्नलिखित दृष्टिकोण हैं जो मैं डालने के लिए सोच सकता था
दृष्टिकोण 1 - निर्माण और आग 3 कच्चे आवेषण
INSERT INTO bill (amount, bill_date) VALUES (10, '2012-01-01 00:00:00');
INSERT INTO bill (amount, bill_date) VALUES (20, '2012-01-02 00:00:00');
INSERT INTO bill (amount, bill_date) VALUES (40, '2013-02-05 00:00:00');
दृष्टिकोण 2 - 1 क्वेरी में मानों को क्लब करना
INSERT INTO bill (amount, bill_date) VALUES
(10, '2012-01-01 00:00:00'),
(20, '2012-01-02 00:00:00'),
(40, '2013-02-05 00:00:00');
दृष्टिकोण 3 - 6 मापदंडों से गुजरते हुए इस क्वेरी को 1 बार फायर करें
INSERT INTO bill (amount, bill_date) VALUES
(?, ?), (?, ?), (?, ?);
दृष्टिकोण 4 - हर बार 2 मापदंडों को बदलते हुए इस तैयार क्वेरी को 3 बार फायर करें
INSERT INTO bill (amount, bill_date) VALUES (?, ?);
किसी भी अन्य दृष्टिकोण का स्वागत है।
मेरा सवाल यह है कि
एक तालिका में कई आवेषण बनाने का सबसे तेज़ तरीका क्या है?
मैंने इस लिंक को mysql इन्सर्ट स्पीड और इस गाइड को JDBC प्रोग्रामिंग पर पढ़ा है , लेकिन मैं किसी निष्कर्ष पर नहीं पहुँच पाया।
मेरा मामला -
वर्तमान में मेरी तालिका में ~ 20 कॉलम हैं, जिनमें से अधिकांश संख्याएँ हैं, जिनमें दो जोड़े (60) और 1 टेक्स्ट कॉलम हैं। मैसूरल संस्करण 5.5। INNODB पर चल रहा है और इंटेगर प्राथमिक कुंजी पर 1 सूचकांक है। सभी प्रश्न लेनदेन में चलते हैं।
मैं जावा से अपने प्रश्नों का निर्माण करता हूं और प्रश्नों को चलाने के लिए स्प्रिंग JDBC का उपयोग करता हूं।
मैं वर्तमान में दृष्टिकोण 3 का अनुसरण कर रहा हूं, 20,000 आवेषण के लिए खाली तालिका में लगभग 10 सेकंड लग रहे हैं, न कि क्वेरी के निर्माण में लगने वाले समय को शामिल करने के लिए।
चीजों को परिप्रेक्ष्य में रखने के लिए, तालिका से डेटा प्राप्त करने के लिए इसकी 100-200 मिली ले।
क्या मैं कुछ छोड़ रहा हूं? मैं आवेषण कैसे तेज़ करूँ?