मुझे यह नहीं मिल रहा है।
मुझे इन अनुक्रमणिकाओं के साथ एक तालिका मिली है
PRIMARY post_id
INDEX topic_id
FULLTEXT post_text
तालिका में (केवल) 346 000 पंक्तियाँ हैं। मैं 2 प्रश्न करने की कोशिश कर रहा हूं।
SELECT post_id
FROM phpbb_posts
WHERE topic_id = 144017
AND post_id != 155352
AND MATCH(post_text) AGAINST('http://rapidshare.com/files/5494794/photo.rar')
जबकि 4.05 सेकंड लगते हैं
SELECT post_id
FROM phpbb_posts
WHERE topic_id=144017
AND post_id != 155352
AND post_text LIKE ('%http://rapidshare.com/files/5494794/photo.rar%')
0.027 सेकंड लेता है।
EXPLAIN से पता चलता है कि केवल अंतर fulltext
संभव__में है ( पोस्ट_टेक्स्ट शामिल है, LIKE
नहीं)
यह वास्तव में अजीब है।
इसके पीछे क्या है? पृष्ठभूमि में क्या हो रहा है? LIKE
जब सूचकांक का उपयोग नहीं किया जाता है और अपने सूचकांक का उपयोग करते समय FULLTEXT इतना धीमा कैसे हो सकता है?
Update1:
वास्तव में अब लगभग 0.5 सेकंड लगते हैं, हो सकता है कि टेबल को लॉक कर दिया गया था, लेकिन फिर भी, जब मैं प्रोफाइलिंग चालू करता हूं तो यह दिखाता है कि फुलटिट इंस्टीट्यूशन ने 0.2 सेकंड का समय लिया। क्या हो रहा है?
मैं अपनी तालिका को LIKE
10x सेकंड के साथ पूर्णांक केवल 2x के साथ क्वेरी कर सकता हूं
UPDATE2:
आश्चर्य!
mysql> SELECT post_id FROM phpbb_posts WHERE post_id != 2 AND topic_id = 6 AND MATCH(post_text) AGAINST ('rapidshare.com');
Empty set (0.04 sec)
तो मैं पूछ रहा हूँ, यह कैसे संभव है?
साथ ही,
SELECT count(*) FROM phpbb_posts WHERE MATCH(post_text) AGAINST ('rapidshare.com')
वास्तव में धीमा है। किसी भी टूट फुलटेक्स्ट हो सकता है?
Update3:
क्या बकवास है?
SELECT forum_id, post_id, topic_id, post_text FROM phpbb_posts WHERE MATCH(post_text) AGAINST ('rapidshare.com') LIMIT 0, 30;
जबकि 0.27s लगते हैं
SELECT count(*) FROM phpbb_posts WHERE MATCH(post_text) AGAINST ('rapidshare.com') LIMIT 0, 30;
30 सेकंड से अधिक समय लगता है! यहाँ क्या गलत हो रहा है?