如果要使用MySQL Full Text Search功能,請在類型爲VARCHAR的字段上定義全文索引。當行被INSERT和UPDATE時,mysql必須保持索引是最新的。我的問題是:MySQL何時重建FTS索引?MySQL何時重建FTS索引?
- A)在發生INSERT或UPDATE後立即影響索引。
- B)當第一個SELECT運行時需要最近受到UPDATE或INSERT影響的索引。
- C)別的東西。
不必要的背景資料:我的經驗似乎認爲選項B.這是正確的?我問,因爲我一直在經歷突然的隨機慢查詢,它會執行全文搜索,我不知道爲什麼有些緩慢而不是其他的。我的直覺是,如果他們正在等待mysql重建FTS索引,查詢可能會很慢,但我不知道這是MySQL的工作原理。
# Query_time: 61.775612 Lock_time: 10.110924 Rows_sent: 20 Rows_examined: 222498
SELECT SQL_CALC_FOUND_ROWS id
FROM members
WHERE
AND MATCH (bio,profile_text,name) AGAINST ('building surveyor')
AND MATCH (town, postcode, country) AGAINST ('united kingdom, liverpool');
通知的Lock_time:隨機慢查詢(通常是相同的查詢下的第二運行),不存在慢UPDATE或INSERT在慢日誌的例子。我在慢日誌中看不到任何其他INSERT或UPDATE,所以我不確定它在等待什麼。這就是爲什麼我猜測它可能正在等待FTS指數重建?