डेटाबेस डिजाइन में अनुकूलता की अनुकूलता


26

जोशुआ बलोच के प्रभावी जावा में आइटम में से एक यह धारणा है कि वर्गों को उदाहरणों के उत्परिवर्तन को यथासंभव कम करने की अनुमति देनी चाहिए, और अधिमानतः बिल्कुल नहीं।

अक्सर, किसी वस्तु का डेटा किसी न किसी रूप के डेटाबेस के लिए बना रहता है। इसने मुझे एक डेटाबेस के भीतर अपरिवर्तनीयता के विचार के बारे में सोचने के लिए प्रेरित किया है, खासकर उन तालिकाओं के लिए जो एक बड़ी प्रणाली के भीतर एक इकाई का प्रतिनिधित्व करते हैं।

हाल ही में मैं जो कुछ प्रयोग कर रहा हूं, वह इन वस्तुओं का प्रतिनिधित्व करने वाली तालिका पंक्तियों को अपडेट करने के लिए कम से कम करने की कोशिश करने का विचार है, और जितना हो सके सम्मिलित करने की कोशिश कर रहा हूं।

कुछ का एक ठोस उदाहरण मैं हाल ही में प्रयोग कर रहा था। अगर मुझे पता है कि मैं बाद में अतिरिक्त डेटा के साथ एक रिकॉर्ड संलग्न कर सकता हूं, तो मैं यह दर्शाने के लिए एक और तालिका बनाऊंगा कि निम्नलिखित दो अलग-अलग परिभाषाओं की तरह:

create table myObj (id integer, ...other_data... not null);
create table myObjSuppliment (id integer, myObjId integer, ...more_data... not null);

यह स्पष्ट रूप से स्पष्ट है कि ये नाम शब्दशः नहीं हैं, बल्कि सिर्फ विचार प्रदर्शित करने के लिए हैं।

क्या यह डेटा दृढ़ता मॉडलिंग के लिए एक उचित दृष्टिकोण है? क्या यह टेबल पर किए गए अपडेट को सीमित करने की कोशिश करने के लायक है, विशेष रूप से डेटा के लिए नल भरने के लिए जो रिकॉर्ड के मूल रूप से मौजूद होने पर मौजूद नहीं हो सकता है? क्या ऐसा समय है जब इस तरह के दृष्टिकोण से बाद में गंभीर दर्द हो सकता है?


7
मुझे ऐसा लगता है कि यह एक समस्या के बिना एक समाधान है ... आपको अपडेट करने से बचने के लिए विस्तृत अनुकूलन बनाने के बजाय अद्यतन करना चाहिए।
फॉस्को

मुझे लगता है कि यह एक समाधान के एक सहज विचार को ध्यान में रखने की अधिक बात थी, और इसे अधिक से अधिक लोगों द्वारा चलाना चाहते थे, और इस प्रक्रिया में यह एहसास हुआ कि यह मेरे पास समस्या का सबसे अच्छा समाधान नहीं हो सकता है। मैं समस्या के साथ एक अलग प्रश्न खोल सकता हूं, बशर्ते कि मैं इसे कहीं और न ढूंढूं।
एड कारेल

1
डेटाबेस में अपडेट से बचने के अच्छे कारण हो सकते हैं। हालाँकि, जब ये कारण सामने आते हैं, तो यह एक अनुकूलन समस्या के रूप में अधिक होता है और जैसे कि बिना सबूत के नहीं किया जाना चाहिए कि कोई समस्या है।
डायटबुद्ध

6
मुझे लगता है कि डेटाबेस में अपरिवर्तनीयता के लिए एक मजबूत तर्क है। यह बहुत सारी समस्याओं का हल करता है। मुझे लगता है कि नकारात्मक टिप्पणियां खुले दिमाग वाले लोगों से नहीं आई हैं। इन-प्लेस अपडेट बहुत सारी समस्याओं का कारण है। मैं तर्क दूंगा कि हमारे पास यह सब पिछड़ा हुआ है। इन-प्लेस अपडेट एक समस्या का विरासत समाधान है जो अब मौजूद नहीं है। भंडारण सस्ता है। क्यो ऐसा करें? कितने डीबी सिस्टम में ऑडिट लॉग, वर्जनिंग सिस्टम, वितरित प्रतिकृति की आवश्यकता होती है, जैसा कि हम सभी जानते हैं कि पैमाने के लिए विलंबता का समर्थन करने की क्षमता की आवश्यकता होती है। अपरिहार्यता यह सब हल करती है।
सिरस

@ फ़ॉस्को कुछ डेटा (डेटा का उपयोग सहित UPDATE) को कभी भी नष्ट नहीं करने के लिए बिल्कुल आवश्यक हैं । जैसे डॉक्टर का मेडिकल रिकॉर्ड।
इज़काता

जवाबों:


25

अपरिवर्तनीयता का प्राथमिक उद्देश्य यह सुनिश्चित करना है कि मेमोरी में डेटा अमान्य स्थिति में होने पर कोई त्वरित समय न हो। (दूसरा कारण यह है कि गणितीय अंकन ज्यादातर स्थिर होते हैं, और इसलिए अपरिवर्तनीय चीजें गणितीय रूप से अवधारणा और मॉडल के लिए आसान होती हैं।) स्मृति में, यदि कोई अन्य थ्रेड डेटा को पढ़ने या लिखने की कोशिश करता है जबकि इसके साथ काम किया जा रहा है, तो यह भ्रष्ट हो सकता है, या हो सकता है। यह स्वयं एक भ्रष्ट स्थिति में हो सकता है। यदि आपके पास किसी ऑब्जेक्ट के फ़ील्ड में कई असाइनमेंट ऑपरेशन हैं, तो एक मल्टीथ्रेड अनुप्रयोग में, एक और थ्रेड इसके साथ कुछ समय के बीच काम करने की कोशिश कर सकता है - जो खराब हो सकता है।

स्मृति में एक नए स्थान पर सभी परिवर्तनों को पहले लिखने और फिर अंतिम असाइनमेंट के रूप में अपरिवर्तनीयता का उपचार करता है, क्योंकि नई वस्तु को इंगित करने के लिए सूचक को फिर से लिखने का एक गिरता-झपट्टा कदम है - जो सभी सीपीयू एक परमाणु है ऑपरेशन।

डेटाबेस परमाणु लेनदेन का उपयोग करते हुए एक ही काम करते हैं : जब आप लेनदेन शुरू करते हैं, तो यह डिस्क पर एक नए स्थान पर सभी नए अपडेट लिखता है। जब आप लेन-देन समाप्त कर लेते हैं, तो यह पॉइंटर को डिस्क में बदल देता है जहां नए अपडेट हैं - जो कि यह एक छोटे से इंस्टेंट में करता है जिसके दौरान अन्य प्रक्रियाएं इसे छू नहीं सकती हैं।

अधिक स्वचालित और अधिक लचीलेपन को छोड़कर, नई तालिकाएँ बनाने के आपके विचार के रूप में यह भी ठीक वैसी ही बात है।

तो आपके सवाल का जवाब देने के लिए, हाँ, डेटाबेस में अपरिवर्तनीयता अच्छी है, लेकिन नहीं, आपको केवल उस उद्देश्य के लिए अलग टेबल बनाने की आवश्यकता नहीं है; आप अपने डेटाबेस सिस्टम के लिए जो भी एटॉमिक ट्रांजैक्शन कमांड उपलब्ध हैं, उसका उपयोग कर सकते हैं।


जवाब के लिए धन्यवाद। यह परिप्रेक्ष्य सिर्फ वही था जो मुझे महसूस करने की जरूरत थी कि मेरे अंतर्ज्ञान को एक ही पैटर्न में विभिन्न विचारों के एक जोड़े को जोड़ने की कोशिश कर रहा था।
एड कारेल

8
वहाँ यह करने के लिए atmoicity की तुलना में थोड़ा अधिक है। एक ओओपी संदर्भ में मैं सबसे अधिक बार अनैतिकता के पक्ष में देखता हूं कि अपरिवर्तनीय वस्तुओं को आपको केवल एक बार अपने राज्य को वैध बनाने की आवश्यकता होती है। यदि वे परिवर्तनशील हैं, तो प्रत्येक विधि जो उनके राज्य को बदल सकती है, यह सत्यापित करने के लिए भी आवश्यक है कि परिणामी स्थिति अभी भी मान्य है, जो वर्ग में महत्वपूर्ण जटिलता जोड़ सकती है। यह तर्क संभावित रूप से डेटाबेस पर भी लागू होता है, लेकिन बहुत कमजोर होता है, क्योंकि db सत्यापन नियम प्रक्रियात्मक होने के बजाय घोषणात्मक होते हैं, इसलिए उन्हें हर क्वेरी के लिए दोहराए जाने की आवश्यकता नहीं होती है।
डेव शेरोहमान

24

यह इस बात पर निर्भर करता है कि आपको अपरिवर्तनीयता से क्या लाभ होने की उम्मीद है। री मियासाका के जवाब ने एक को संबोधित किया (अमान्य मध्यवर्ती राज्यों से बचा), लेकिन यहाँ एक और है।

उत्परिवर्तन को कभी-कभी विनाशकारी अपडेट कहा जाता है : जब आप किसी ऑब्जेक्ट को म्यूट करते हैं, तो पुरानी स्थिति खो जाती है (जब तक कि आप किसी तरह से इसे संरक्षित करने के लिए अतिरिक्त कदम नहीं उठाते)। इसके विपरीत, अपरिवर्तनीय डेटा के साथ, यह कुछ ऑपरेशन से पहले और बाद में या कई उत्तराधिकारी राज्यों का प्रतिनिधित्व करने के लिए एक साथ राज्य का प्रतिनिधित्व करने के लिए तुच्छ है। एक भी राज्य वस्तु को उत्परिवर्तित करके चौड़ाई-प्रथम खोज को लागू करने की कोशिश कर रहा है।

यह संभवतः डेटाबेस दुनिया में सबसे अधिक बार अस्थायी डेटा के रूप में दिखाई देता है । कहते हैं कि पिछले महीने आप बेसिक प्लान पर थे, लेकिन 16 वीं तारीख को आप प्रीमियम प्लान में चले गए। यदि हम अभी कुछ क्षेत्र से आगे निकल गए हैं जो यह दर्शाता है कि आप किस योजना पर हैं, तो हमें बिलिंग सही होने में कठिनाइयाँ हो सकती हैं। हम रुझानों का विश्लेषण करने की क्षमता को भी याद कर सकते हैं। (अरे, यह स्थानीय विज्ञापन अभियान ने क्या किया!)

वैसे भी मेरे दिमाग में यही आता है जब आप "डेटाबेस डिज़ाइन में अपरिवर्तनीयता" कहते हैं, वैसे भी।


2
मैं आपके तीसरे पैराग्राफ से असहमत हूं। यदि आप एक इतिहास (ऑडिट लॉग, योजना परिवर्तन का लॉग आदि) चाहते हैं, तो आपको इसके लिए एक अलग तालिका बनानी होगी। Customerतालिका के सभी 50 क्षेत्रों को दोहराते हुए केवल यह याद रखना कि उपयोगकर्ता ने योजना को बदल दिया है, जिसमें भारी प्रदर्शन की कमी के अलावा कुछ भी नहीं है, समय के साथ धीमा चयन, अधिक जटिल डेटा खनन (लॉग की तुलना में) और अधिक बर्बाद स्थान।
बजे आर्सेनी मूरज़ेंको

6
@ मेनमा: शायद मुझे इसके बजाय "टेम्पोरल डेटाबेस के बारे में पढ़ा जाना चाहिए" कहा जाना चाहिए। मेरा उदाहरण अस्थायी डेटा क्या है के एक स्केच के रूप में इरादा था; मैं दावा नहीं करता कि हमेशा बदलते डेटा का प्रतिनिधित्व करने का सबसे अच्छा तरीका है। दूसरी ओर, जबकि वर्तमान में लौकिक डेटा के लिए समर्थन बहुत खराब है, मैं उम्मीद करता हूं कि डेटाबेस में लौकिक डेटा को समायोजित करने की दिशा में हो, बजाय परिवर्तन लॉग जैसे "द्वितीय श्रेणी" अभ्यावेदन के इसे वापस करने के बजाय।
रयान क्यूलपेपर

क्या होगा यदि हम एक ऑडिट टेबल में बदलाव का इतिहास बनाए रखें (वसंत बूट और हाइबरनेट उदाहरण के लिए इस क्षमता को बंद करें)?
मोहम्मद नाजर

14

यदि आप उन लाभों में रुचि रखते हैं जो आपको किसी डेटाबेस में अपरिवर्तनीयता से मिल सकते हैं, या कम से कम एक डेटाबेस जो अपरिवर्तनीयता का भ्रम प्रदान करता है, तो डेटामिक की जांच करें।

डाटोमिक रिच हिकी द्वारा थिंक रेलेवेंस के साथ गठबंधन में आविष्कार किया गया एक डेटाबेस है, वहाँ बहुत सारे वीडियो हैं जहां वे वास्तुकला, लक्ष्यों, डेटा मॉडल की व्याख्या करते हैं। खोज की जानकारी, विशेष रूप से एक का नाम है डेटामिक, डेटाबेस एक मूल्य के रूप में । संघर्षों में आप 2012 में यूरोकलोजर सम्मेलन में दिए गए एक मुख्य वक्ता रिच हिकी को पा सकते हैं।

Vimeo.com/53162418 में एक बात है जो अधिक विकासोन्मुखी है।

यहाँ स्टुअर्ट हॉलोवे से एक और है .pscdn.net/008/00102/videoplatform/kv/121105techconf_close.html

  • डाटामिक समय में तथ्यों का एक डेटाबेस है, जिसे डेटा कहा जाता है, 5-ट्यूपल्स [ई, ए, वी, टी, ओ] में।
    • एंटिटी आई.डी.
    • इकाई में एक विशेषता नाम (नाम स्थान हो सकता है)
    • वी विशेषता के मान
    • टी ट्रांजैक्शन आईडी, इसके साथ आपके पास समय की धारणा है।
    • हे जोर (वर्तमान या वर्तमान मूल्य), अस्वीकृति (पिछले मूल्य) का एक ऑपरेशन;
  • EDN (एक्स्टेंसिबल डेटा नोटेशन) नामक इसका स्वयं का डेटा प्रारूप उपयोग करता है
  • लेनदेन ACID हैं
  • क्वेरी भाषा के रूप में datalog का उपयोग करता है, जो कि SQL + पुनरावर्ती प्रश्नों के रूप में घोषणात्मक है। क्वेरीज़ को डेटा संरचनाओं के साथ दर्शाया जाता है, और आपकी jvm भाषा के साथ विस्तारित किया जाता है, आपको क्लॉज़र का उपयोग करने की आवश्यकता नहीं है।
  • डेटाबेस को 3 अलग-अलग सेवाओं (प्रक्रियाओं, मशीनों) में डिकोड किया गया है:
    • लेन-देन
    • भंडारण
    • क्वेरी इंजन।
  • आप प्रत्येक सेवा को अलग-अलग कर सकते हैं।
  • यह खुला स्रोत नहीं है, लेकिन डाटामिक का मुफ्त (बीयर में) संस्करण है।
  • आप एक लचीली स्कीमा बता सकते हैं।
    • विशेषताओं का सेट खुला है
    • कभी भी नई विशेषताएँ जोड़ें
    • परिभाषा या क्वेरी में कोई कठोरता नहीं

अब, चूंकि जानकारी को समय में तथ्यों के रूप में संग्रहीत किया जाता है:

  • आप जो कुछ भी करते हैं वह डेटाबेस में तथ्य जोड़ते हैं, आप उन्हें कभी नहीं हटाते हैं (जब कानून द्वारा आवश्यक हो तो छोड़कर)
  • आप हमेशा के लिए सब कुछ कैश कर सकते हैं। क्वेरी इंजन, मेमोरी सर्वर में एक के रूप में एप्लिकेशन सर्वर में रहता है (जेवीएम भाषाओं के लिए गैर-जेवीएम भाषाओं का उपयोग आरईएसटी एपीआई के माध्यम से होता है।)
  • आप अतीत में समय के अनुसार क्वेरी कर सकते हैं।

डेटाबेस एक मान है, और क्वेरी इंजन के लिए एक पैरामीटर है, क्यूई कनेक्शन और कैशिंग का प्रबंधन करता है। चूँकि आप db को एक मान के रूप में देख सकते हैं, और मेमोरी में अपरिवर्तनीय डेटा संरचना, आप इसे "भविष्य में" मूल्यों से बने किसी अन्य डेटा संरचना के साथ मर्ज कर सकते हैं और वास्तविक डेटाबेस को बदले बिना, भविष्य के मूल्यों के साथ QE और क्वेरी को पास कर सकते हैं। ।

रिच हिकी की एक ओपन सोर्स परियोजना है, जिसे कोडक कहा जाता है , आप इसे गितुब डेटामिक / कोडक में पा सकते हैं, जो गिट मॉडल का विस्तार करता है, और डेटा-रहित डेटाबेस में वस्तुओं को संदर्भित करने के लिए संदर्भ संग्रहीत करता है, और आपके कोड के प्रश्न बनाता है, आप कैसे डेटा का उपयोग करने के लिए एक उदाहरण देख सकते हैं ।

आप डेटामिक को ACID NoSQL के रूप में सोच सकते हैं, डेटामेट्स के साथ आप टेबल या दस्तावेज़ या केवी-स्टोर या ग्राफ़ को मॉडल कर सकते हैं।


7

अद्यतनों से बचने, और आवेषण को प्राथमिकता देने का विचार, एक इवेंट सोर्स के रूप में आपके डेटा स्टोरेज के निर्माण के पीछे के विचारों में से एक है, एक विचार जिसे आप अक्सर CQRS के साथ मिलकर उपयोग करते हैं। इवेंट स्रोत मॉडल में, कोई अद्यतन नहीं है: एक समुच्चय को उसके "परिवर्तन" (घटनाओं) के अनुक्रम के रूप में दर्शाया जाता है, और परिणामस्वरूप भंडारण केवल परिशिष्ट है। यदि आप इसके बारे में उत्सुक हैं, तो
इस साइट में CQRS और इवेंट सोर्सिंग पर दिलचस्प चर्चाएँ हैं!


CQRS और इवेंट सोर्सिंग इन दिनों प्रकाश में आ रहा है।
गुलशन

6

यह डेटा वेयरहाउसिंग दुनिया में "धीरे-धीरे बदलते आयाम", और अन्य डोमेन में "टेम्पोरल" या "बी-टेम्पोरल" तालिकाओं के रूप में जाना जाता है के साथ एक बहुत करीबी संबंध रखता है।

मूल निर्माण है:

  1. हमेशा प्राथमिक कुंजी के रूप में एक उत्पन्न सरोगेट कुंजी का उपयोग करें।
  2. आप जो भी वर्णन कर रहे हैं उसकी विशिष्ट पहचान "तार्किक कुंजी" बन जाती है।
  3. प्रत्येक पंक्ति में कम से कम "ValidFrom" टाइमस्टैम्प होना चाहिए और वैकल्पिक रूप से "ValidTo" टाइमस्टैम्प और इससे भी अधिक वैकल्पिक रूप से "नवीनतम संस्करण" ध्वज होना चाहिए।
  4. एक तार्किक इकाई के "निर्माण" पर आप वर्तमान टाइमस्टैम्प के "वैलिड फ्रॉम" के साथ एक नई पंक्ति डालें। वैकल्पिक ValidTo "हमेशा के लिए" (9999-12-31 23:59:59) और "सच" का अंतिम संस्करण है।
  5. तार्किक इकाई के बाद के अद्यतन पर। आप कम से कम ऊपर एक नई पंक्ति डालें। आपको "अब () - 1 सेकंड" और नवीनतम संस्करण "फाल्स" के लिए पिछले संस्करण पर ValidTo को समायोजित करने की आवश्यकता हो सकती है।
    1. तार्किक विलोपन पर (यह केवल ValidTo टाइमस्टैम्प के साथ काम करता है!) आप वर्तमान पंक्ति में ValidTo ध्वज को "अब () -1 सेकंड" पर सेट करते हैं।

इस योजना के लाभ यह है कि आप किसी भी समय अपनी तार्किक इकाई के "राज्य" को फिर से बना सकते हैं, आपके पास समय के साथ अपनी इकाई का इतिहास होता है और यदि आपकी "तार्किक इकाई" का अत्यधिक उपयोग किया जाता है तो आप विवाद को कम कर सकते हैं।

नुकसान यह है कि आप बहुत अधिक डेटा संग्रहीत करते हैं, और आपको अधिक अनुक्रमणिका (कम से कम तार्किक कुंजी + ValidFrom + ValidTo पर) बनाए रखने की आवश्यकता होती है। लॉजिकल की + लेटेस्ट वर्जन पर एक इंडेक्स ज्यादातर क्वेरीज को बहुत तेजी से बढ़ाता है। यह आपके SQL को भी जटिल करता है!

क्या यह तब तक करने योग्य है जब तक आपको वास्तव में एक इतिहास को बनाए रखने की आवश्यकता नहीं है और एक निश्चित समय पर अपनी संस्थाओं की स्थिति को फिर से बनाने की आवश्यकता है।


1

एक अपरिवर्तनीय डेटाबेस होने का एक अन्य संभावित कारण बेहतर समानांतर प्रसंस्करण का समर्थन करना होगा। क्रम से होने वाले अपडेट स्थायी रूप से डेटा को गड़बड़ कर सकते हैं, इसलिए इसे रोकने के लिए ताला लगाना पड़ता है, जिससे समानांतर प्रदर्शन नष्ट हो जाता है। घटनाओं के आवेषण के बहुत सारे किसी भी क्रम में जा सकते हैं, और राज्य कम से कम अंततः सही होगा जब तक कि सभी घटनाओं को अंततः संसाधित नहीं किया जाता है। हालाँकि डेटाबेस अपडेट करने की तुलना में व्यवहार में काम करना इतना कठिन है कि आपको इस तरह से काम करने पर विचार करने के लिए वास्तव में बहुत समानता की आवश्यकता होगी - मैं इसकी सिफारिश नहीं कर रहा हूं ।


0

अस्वीकरण: मैं डीबी में बहुत नया हूं: पी

कहा जा रहा है कि, इस डेटा को संतृप्त करने के प्रदर्शन पर तत्काल प्रभाव पड़ता है:

  • प्राथमिक टेबल पर अच्छा ट्रैफिक
  • प्राथमिक टेबल पर अच्छी छोटी पंक्तियाँ
  • उपग्रह डेटा को खराब करने का मतलब है कि एक और लुक-अप आवश्यक है
  • बुरा और अधिक स्थान पर कब्जा कर लिया है, तो सभी वस्तुओं दोनों तालिकाओं में मौजूद

आपकी आवश्यकताओं के आधार पर, आप या तो इसका स्वागत कर सकते हैं या नहीं, लेकिन यह निश्चित रूप से विचार करने का एक बिंदु है।


-1

मैं नहीं देखता कि आपकी योजना को "अपरिवर्तनीय" कैसे कहा जा सकता है।

जब अनुपूरक तालिका में संग्रहीत मान परिवर्तित होता है तो क्या होता है? ऐसा लगता है कि आपको उस तालिका पर एक अपडेट करने की आवश्यकता होगी।

एक डेटाबेस के लिए वास्तव में अपरिवर्तनीय होने के लिए इसे "INSERTS" द्वारा पूरी तरह से बनाए रखने की आवश्यकता होगी। इसके लिए आपको "वर्तमान" पंक्ति को पहचानने की कुछ विधि की आवश्यकता है। यह लगभग हमेशा भयानक रूप से अक्षम होता है। आपको या तो सभी पिछले अपरिवर्तित मानों को कॉपी करना होगा, या, जब आप क्वेरी करते हैं तो कई रिकॉर्ड से वर्तमान स्थिति को एक साथ जोड़ सकते हैं। वर्तमान पंक्ति के चयन में आमतौर पर कुछ भयानक गड़बड़ SQL की आवश्यकता होती है जैसे ( where updTime = (SELECT max(updTime) from myTab where id = ?)।

DataWarehousing में यह समस्या बहुत सामने आती है जहाँ आपको समय के साथ डेटा का इतिहास रखने की आवश्यकता होती है, और, किसी भी समय बिंदु के लिए राज्य का चयन करने में सक्षम हो। समाधान आमतौर पर "आयामी" तालिकाओं है। हालाँकि, जब वे DW को हल करते हैं "जो पिछले जनवरी की बिक्री प्रतिनिधि था" समस्या। वे कोई भी लाभ प्रदान नहीं करते हैं जो जावस अपरिवर्तनीय वर्ग करते हैं।

अधिक दार्शनिक नोट पर; डेटाबेस "स्टेट" (आप बैंक बैलेंस, आपकी बिजली की खपत, StackOverflow आदि पर आपके ब्राउनी पॉइंट्स) को स्टोर करने के लिए मौजूद हैं। "स्टेटलेस" डेटाबेस के साथ आने की कोशिश करना एक बेकार बात है।


एक एकल रिकॉर्ड के लिए, WHERE id = {} ORDER BY updTime DESC LIMIT 1आमतौर पर बहुत अक्षम नहीं है।
इज़काता

@ इज़काटा - एक तीन टेबल के मध्य के हट में डालने की कोशिश करें :-)
जेम्स एंडरसन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.