जैसा कि मेरी तालिका में वर्तमान में मेरे पास लगभग 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
. जैसी किसी चीज़ पर स्विच करना होगा ?