पावेल ने बिल्कुल सही कहा है, मैं बस थोड़ा सा समझाना चाहूंगा।
यह मानते हुए कि आपका मतलब फ़्लोटिंग पॉइंट, या फिक्स्ड-पॉइंट-ऑफ़सेट पूर्णांक की तुलना में एक प्रदर्शन प्रभाव है (अर्थात एक पूर्णांक के रूप में हजारों प्रतिशत का भंडारण):हाँ, बहुत अधिक प्रदर्शन प्रभाव है। PostgreSQL, और चीजों की आवाज़ से MySQL, स्टोर करें DECIMAL
/ NUMERIC
बाइनरी-कोडेड दशमलव में। यह प्रारूप अंकों को पाठ के रूप में संग्रहीत करने की तुलना में अधिक कॉम्पैक्ट है, लेकिन इसके साथ काम करना अभी भी बहुत कुशल नहीं है।
यदि आप डेटाबेस में कई गणना नहीं कर रहे हैं, तो प्रभाव पूर्णांक या फ़्लोटिंग पॉइंट की तुलना में बीसीडी के लिए आवश्यक अधिक संग्रहण स्थान तक सीमित है, और इस प्रकार व्यापक पंक्तियां और धीमी स्कैन, बड़ी अनुक्रमणिका इत्यादि। बी में तुलना संचालन -ट्री इंडेक्स खोजें भी धीमी हैं, लेकिन महत्वपूर्ण नहीं हैं जब तक कि आप किसी अन्य कारण से पहले से ही सीपीयू-बाउंड नहीं हैं।
अगर आप DECIMAL
. के साथ बहुत सारी गणना कर रहे हैं / NUMERIC
डेटाबेस में मान, तो प्रदर्शन वास्तव में पीड़ित हो सकता है। यह विशेष रूप से ध्यान देने योग्य है, कम से कम PostgreSQL में, क्योंकि Pg किसी भी क्वेरी के लिए एक से अधिक CPU का उपयोग नहीं कर सकता है। यदि आप संख्याओं पर विभाजन और गुणा, अधिक जटिल गणित, एकत्रीकरण इत्यादि का एक बड़ा समूह कर रहे हैं, तो आप उन परिस्थितियों में खुद को सीपीयू-बाध्य ढूंढना शुरू कर सकते हैं जहां आप फ्लोट या पूर्णांक डेटा प्रकार का उपयोग करते समय कभी नहीं होंगे। यह विशेष रूप से OLAP-जैसे (एनालिटिक्स) वर्कलोड में और लोडिंग या एक्सट्रैक्शन (ETL) के दौरान रिपोर्टिंग या डेटा ट्रांसफ़ॉर्मेशन में ध्यान देने योग्य है।
इस तथ्य के बावजूद कि वहाँ है एक प्रदर्शन प्रभाव (जो नगण्य से काफी बड़े कार्यभार के आधार पर भिन्न होता है) आपको आमतौर पर numeric
का उपयोग करना चाहिए / decimal
जब यह आपके कार्य के लिए सबसे उपयुक्त प्रकार हो - यानी जब बहुत उच्च श्रेणी के मानों को संग्रहीत किया जाना चाहिए और/या गोल करने की त्रुटि स्वीकार्य नहीं है।
कभी-कभी यह एक बड़े और निश्चित-बिंदु ऑफसेट का उपयोग करने की परेशानी के लायक है, लेकिन यह अनाड़ी और अनम्य है। मुद्रा जैसी चीज़ों के लिए फ़्लोटिंग पॉइंट मानों के साथ मज़बूती से काम करने की सभी चुनौतियों के कारण फ़्लोटिंग पॉइंट का उपयोग करना शायद ही कभी सही उत्तर होता है।
(बीटीडब्लू, मैं काफी उत्साहित हूं कि कुछ नए इंटेल सीपीयू, और आईबीएम की पावर 7 रेंज के सीपीयू में आईईईई 754 दशमलव फ़्लोटिंग पॉइंट के लिए हार्डवेयर समर्थन शामिल है। अगर यह कभी भी निचले अंत सीपीयू में उपलब्ध हो जाता है तो यह डेटाबेस के लिए एक बड़ी जीत होगी ।)