Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

अल्पविराम से अलग किए गए नाम के लिए MySQL खोज क्वेरी

हाँ, यदि कोई संभावना है तो आप last, first both दोनों डाल सकते हैं और first last डेटाबेस में, बेहतर तरीका है कि आप अपने स्कीमा को ठीक से डिज़ाइन करें।

अगर आप कभी अपने आप को भागों . पर खोजने, या अन्यथा हेरफेर करने का प्रयास करते हुए देखें स्तंभों की, आपकी स्कीमा लगभग निश्चित रूप से टूटा हुआ है। यह लगभग निश्चित रूप से प्रदर्शन को मार देगा।

तालिका को इस प्रकार रखने का सही तरीका है:

T1  FirstName  LastName
==  =========  ========
 1  Pax        Diablo
 2  Bob        Smith
 3  George     Jones

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

मामले में जहां डेटाबेस हमेशा last, first धारण करता है , यह वास्तव में स्कीमा परिवर्तन के लिए आवश्यक नहीं हो सकता है।

उस मामले में आपके पास जो समस्या है, वह केवल यह समझने में है कि उपयोगकर्ता ने क्या दर्ज किया है।

एक संभावना, हालांकि यह एक प्रदर्शन हत्यारा है, like . करना है प्रत्येक अलग शब्द के लिए। इसलिए, यदि उपयोगकर्ता ने pax diablo . दर्ज किया है , आपकी परिणामी क्वेरी हो सकती है:

select T1 from mytable
    where T2 like '%pax%'
      and T2 like '%diablo%'

इस तरह, आपको ऑर्डर की इतनी परवाह नहीं है।

हालाँकि, धीमे प्रश्नों के प्रति मेरी नापसंदगी को देखते हुए, मैं इसे तब तक स्पष्ट करने की कोशिश करूँगा जब तक कि बिल्कुल आवश्यक न हो (या आपका डेटाबेस अपेक्षाकृत छोटा है और इस तरह रहने की संभावना है)।

इस प्रकार के प्रश्नों को गति देने के सभी तरीके हैं, जैसे:

  • आपके DBMS में जो भी पूर्ण-पाठ खोज क्षमता है उसका उपयोग करना।
  • इन्सर्ट/अपडेट ट्रिगर्स के दौरान शब्दों को एक्सट्रेक्ट और स्टोर करके (और डिलीट ट्रिगर्स के दौरान उन्हें हटाकर) ऐसी क्षमताओं का अनुकरण करना।
  • वह पिछला मामला, लेकिन वर्तमान कॉलम (गति के लिए) के लोअर-केस मानों के साथ उपयोग किए जाने वाले अतिरिक्त कॉलम भी सुनिश्चित करता है।
  • उपयोगकर्ता को बताना कि उन्हें last, first का उपयोग करने की आवश्यकता है खोजने के लिए प्रपत्र।
  • %something% से बचने की कोशिश कर रहा है जितना हो सके स्ट्रिंग खोजें (something% . के साथ) , अनुक्रमणिका का अभी भी उपयोग किया जा सकता है)।
  • मेरे पहले उल्लेखित "वें नाम को दो कॉलम में विभाजित करें" विधि।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. प्रत्येक पंक्ति MySQL के लिए एक क्वेरी 2 सेल को कैसे गुणा कर सकती है?

  2. MYSQL में अंतिम अद्यतन रिकॉर्ड की प्राथमिक कुंजी कैसे प्राप्त करें?

  3. एचटीएमएल फॉर्म से परिभाषित चर के आधार पर गतिशील रूप से MYSQL अद्यतन विवरण कैसे उत्पन्न करें

  4. MySQL डेटा को पेज से PDF में कैसे बदलें

  5. चयन करें * तालिका से जहां कॉलम =1,2,3,4