ऐसा लगता है कि यह समाधान काम कर रहा है (इस पेज
से लगभग शब्दशः चुरा लिया गया है ) इसके लिए एक auxiliary
की आवश्यकता है तालिका, अनुक्रमिक संख्याओं से 1 से कम से कम अलग-अलग शब्दों की अपेक्षित संख्या से भरी हुई है। यह जांचना काफी महत्वपूर्ण है कि सहायक तालिका काफी बड़ी है, या परिणाम गलत होंगे (कोई त्रुटि नहीं दिखा रहा है)।
SELECT
SUBSTRING_INDEX(SUBSTRING_INDEX(maintable.comment, ' ', auxiliary.id), ' ', -1) AS word,
COUNT(*) AS frequency
FROM maintable
JOIN auxiliary ON
LENGTH(comment)>0 AND SUBSTRING_INDEX(SUBSTRING_INDEX(comment, ' ', auxiliary.id), ' ', -1)
<> SUBSTRING_INDEX(SUBSTRING_INDEX(comment, ' ', auxiliary.id-1), ' ', -1)
GROUP BY word
HAVING word <> ' '
ORDER BY frequency DESC;
यह दृष्टिकोण उतना ही अक्षम है जितना कोई हो सकता है, क्योंकि यह किसी भी अनुक्रमणिका का उपयोग नहीं कर सकता है।
एक विकल्प के रूप में, मैं एक सांख्यिकी तालिका का उपयोग करूंगा जिसे मैं ट्रिगर्स के साथ अप-टू-डेट रखूंगा। शायद उपरोक्त के साथ आँकड़ों की तालिका को इनिशियलाइज़ करें।