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

mysql स्ट्रिंग पर पूर्ण शब्द या शब्द की शुरुआत से मेल खाना पसंद करता है

जैसा कि प्रश्न में पहले ही कहा जा चुका है

$query = 'SELECT * FROM MYTABLE WHERE SEARCHFIELD LIKE "' . $searchText . '%"'
                                . 'OR SEARCHFIELD LIKE "% ' . $searchText . '%"'

रिकॉर्ड मिलान के लिए काम करता है जहां SEARCHFIELD इसमें एक शब्द होता है जो $searchText . से शुरू होता है (या इसके बराबर होता है)

प्रदर्शन के संबंध में मैंने अपनी विकास मशीन MBP 2,2 GHz i7 quad core पर एक परीक्षण किया है :

4.000 रिकॉर्ड पर किसी शब्द को खोजने में लगभग 40 मिलीसेकंड का समय लगता है।

रिकॉर्ड सामान्य रूप से अनुक्रमित होते हैं (कोई पूर्ण पाठ नहीं)।

मेरे पास कुछ हज़ार रिकॉर्ड हैं और क्वेरी बहुत बार नहीं चलती है इसलिए मेरे लिए अच्छा है।
समाधान अन्य संदर्भों के लिए उपयुक्त नहीं हो सकता है।

उपरोक्त क्वेरी के साथ एक तैयार स्टेटमेंट बनाने के लिए मैंने यहां वर्णित तकनीक का इस्तेमाल किया:

MySQL वाइल्ड कार्ड से बचना

परिणामी कोड इस प्रकार है:

function like($s, $e)
{
    return str_replace(array($e, '_', '%'), array($e . $e, $e . '_', $e . '%'), $s);
}

/* ... */

/* create a prepared statement */
$stmt = $mysqli->prepare(
    'SELECT * FROM MYTABLE WHERE SEARCHFIELD LIKE ? ESCAPE "=" OR SEARCHFIELD LIKE ? ESCAPE "="'
); 

if( $stmt )
{
    /* escape the text */
    $escSearchText = like( $searchText, "=" );

    /* 'like' parameters */
    $like1 = $escSearchText . "%";
    $like2 = "%" . $escSearchText . "%";

    /* bind parameters for markers */
    $stmt->bind_param( "ss", $like1, $like2 );

/* ... */


  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. MySQL 8 पासवर्ड के साथ नया उपयोगकर्ता बनाएं जो काम नहीं कर रहा है

  3. यह कथन क्यों rs=st.executeQuery(query); रोमांचक नहीं है? मैं केवल एक तालिका का चयन कैसे कर सकता हूं जो दो तालिकाओं से mysql से इनपुट प्रकार =रेडियो पर निर्भर करता है?

  4. पीएचपी खोज इंजन स्क्रिप्ट

  5. MySQL में उपयोगकर्ता लॉगिन के आधार पर कनेक्शन टाइमआउट कैसे सेट करें?