Saat ini saya mencoba menjalankan beberapa query terhadap data dump komentar Stack Overflow. Seperti apa skema ini:
CREATE TABLE `socomments` (
`Id` int(11) NOT NULL,
`PostId` int(11) NOT NULL,
`Score` int(11) DEFAULT NULL,
`Text` varchar(600) NOT NULL,
`CreationDate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`UserId` int(11) NOT NULL,
PRIMARY KEY (`Id`),
KEY `idx_socomments_PostId` (`PostId`),
KEY `CreationDate` (`CreationDate`),
FULLTEXT KEY `Text` (`Text`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
Saya menjalankan kueri ini terhadap tabel, dan berjalan sangat lambat (Memang memiliki 29 juta baris, tetapi memiliki indeks Teks Lengkap):
SELECT *
FROM socomments
WHERE MATCH (Text) AGAINST ('"fixed the post"' IN BOOLEAN MODE)
Jadi saya membuat profilnya, hasilnya adalah:
|| Status || Duration ||
|| starting || 0.000058 ||
|| checking permissions || 0.000006 ||
|| Opening tables || 0.000014 ||
|| init || 0.000019 ||
|| System lock || 0.000006 ||
|| optimizing || 0.000007 ||
|| statistics || 0.000013 ||
|| preparing || 0.000005 ||
|| FULLTEXT initialization || 207.1112 ||
|| executing || 0.000009 ||
|| Sending data || 0.000856 ||
|| end || 0.000004 ||
|| query end || 0.000004 ||
|| closing tables || 0.000006 ||
|| freeing items || 0.000059 ||
|| logging slow query || 0.000037 ||
|| cleaning up || 0.000046 ||
Seperti yang Anda lihat, ini menghabiskan waktu yang lama dalam inisialisasi FULLTEXT. Apakah ini normal? Jika tidak, bagaimana saya memperbaikinya?
id_group 2
danid_group 23
. Dengan ini pencarian Anda di dalam tabel utama Anda dan batasi permintaan Anda untuk rentang id 2.000 hingga 2.999 dan 23.000 hingga 23.999. Tentu saja yang ke-2 akan menghasilkan lebih banyak hasil sesuai kebutuhan ketika Anda menggabungkan semua komentar membuat kombinasi kata kunci baru, tetapi akhirnya akan mempercepat semuanya. Tentu saja itu menggandakan penggunaan ruang disk. Komentar baru harus CONCAT'ed ke tabel grup.