Saya tidak mendapatkan ini.
Saya punya tabel dengan indeks ini
PRIMARY post_id
INDEX topic_id
FULLTEXT post_text
Tabel memiliki (hanya) 346.000 baris. Saya mencoba melakukan 2 pertanyaan.
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')
membutuhkan waktu 4,05 detik
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%')
membutuhkan waktu 0,027 detik.
EXPLAIN menunjukkan bahwa satu-satunya perbedaan adalah dalam kemungkinan_kunci ( fulltext
sudah termasuk post_text, LIKE
tidak)
Itu sangat aneh.
Ada apa di balik ini? Apa yang terjadi di latar belakang? Bagaimana bisa LIKE
begitu cepat ketika tidak menggunakan indeks dan FULLTEXT sangat lambat saat menggunakan indeksnya?
UPDATE1:
Sebenarnya sekarang ini membutuhkan waktu sekitar 0,5 detik, mungkin meja dikunci, tetapi tetap saja, ketika saya menghidupkan profil, ini menunjukkan bahwa INISIIALISASI FULLTEXT memerlukan waktu 0,2 detik. Ada apa?
Saya dapat meminta tabel saya dengan LIKE
10x per detik, dengan teks lengkap hanya 2x
UPDATE2:
Mengherankan!
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)
jadi saya bertanya, bagaimana ini mungkin?
Selain itu,
SELECT count(*) FROM phpbb_posts WHERE MATCH(post_text) AGAINST ('rapidshare.com')
sangat lambat. Bisakah teks lengkap rusak?
UPDATE3:
Apa apaan?
SELECT forum_id, post_id, topic_id, post_text FROM phpbb_posts WHERE MATCH(post_text) AGAINST ('rapidshare.com') LIMIT 0, 30;
Dibutuhkan waktu 0,27 detik
SELECT count(*) FROM phpbb_posts WHERE MATCH(post_text) AGAINST ('rapidshare.com') LIMIT 0, 30;
membutuhkan waktu lebih dari 30 detik! Apa yang salah di sini?