আমি এটা পাচ্ছি না
আমি এই সূচী সঙ্গে একটি টেবিল পেয়েছি
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 সেকেন্ড সময় নেয়।
ব্যাখ্যা করুন দেখায় যে কেবলমাত্র পার্থক্য fulltext
সম্ভব_কিজে রয়েছে ( পোস্ট_টেক্সট অন্তর্ভুক্ত রয়েছে, LIKE
নেই)
সত্যিই অদ্ভুত।
এর পিছনে কী? ব্যাকগ্রাউন্ডে কি হচ্ছে? LIKE
সূচক এবং ফুলটেক্সটকে এর সূচকটি ব্যবহার করার সময় এত ধীর গতিতে কীভাবে করা যেতে পারে?
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;
৩০ সেকেন্ডেরও বেশি সময় লাগে! এখানে কি ভুল হচ্ছে?