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

MySQL तालिका में सबसे समान पंक्तियाँ प्राप्त करना और उन्हें समानता के आधार पर क्रमित करना

जैसा कि मेरी तालिका में वर्तमान में मेरे पास लगभग 5k पंक्तियाँ हैं और वे धीरे-धीरे बढ़ रही हैं, मैंने वास्तव में निम्नलिखित सरल दृष्टिकोण का उपयोग करने का निर्णय लिया (यह मेरे द्वारा प्रश्न लिखने के बाद ही आया था)।

बीज मान लें कि Honda Accord (model_id 456), 2004, गैसोलीन, 2.0L, 155hp, सेडान ऑटो-इंक आईडी 123 के साथ है।

SELECT vehicles.*,  
    (IF(`fuel_type`='gasoline', 3, 0) + 
     IF(`body_style`='sedan', 1, 0) + 
     IF(`year` > 2001 AND `year` < 2007, 2, 0) + 
     IF(`engine_size` >= 1.8 AND `engine_size` <= 2.2, 1, 0) + 
     IF(`engine_power`=155, 3, IF(`engine_power`>124 AND `engine_power`<186, 1, 0))) AS `rank`
FROM vehicles
WHERE vehicle_id!=123 AND model_id=456
ORDER BY `rank` DESC
LIMIT 3

यह तब तक काम करेगा, जब तक मैं बहुत अधिक पंक्तियाँ नहीं करूँगा। यदि तालिका 50-100k हो जाती है, तो शायद मुझे Lucene . जैसी किसी चीज़ पर स्विच करना होगा ?




  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 में मौजूदा पंक्ति के कॉलम के मान में 1 कैसे जोड़ें

  3. क्या मेरी बड़ी mysql तालिका विफलता के लिए नियत है?

  4. MySQL में रैंक की गणना कैसे करें

  5. MySQL> तालिका मौजूद नहीं है। लेकिन यह करता है (या इसे चाहिए)