我需要爲兩個不同表中的兩個不同列做全文索引。在innodb中使用myisam slave/ghost表進行全文搜索
唯一的問題是我使用innodb,並且我沒有辦法做全文索引。
我知道有一些選項,例如獅身人面像和我看看選項,但我覺得這是一個矯枉過正,因爲colums是全文索引是varchar(20)。
而且,很可能會出現只有約1,000,000行「最多」
一個簡單的選項,我在想是隻有主鍵和使用的MyISAM索引的VARCHAR複製的兩個表。
什麼建議嗎?有什麼辦法可以輕鬆實現嗎?
我需要爲兩個不同表中的兩個不同列做全文索引。在innodb中使用myisam slave/ghost表進行全文搜索
唯一的問題是我使用innodb,並且我沒有辦法做全文索引。
我知道有一些選項,例如獅身人面像和我看看選項,但我覺得這是一個矯枉過正,因爲colums是全文索引是varchar(20)。
而且,很可能會出現只有約1,000,000行「最多」
一個簡單的選項,我在想是隻有主鍵和使用的MyISAM索引的VARCHAR複製的兩個表。
什麼建議嗎?有什麼辦法可以輕鬆實現嗎?
我決定去用一個簡單的解決方案:
首先,插入該行的InnoDB表(主)。然後,在它之後,將該行插入myisam表(不是觸發器)。
每隔一小時左右運行一次cron以確保參照完整性。
查詢將是這樣的:
SELECT *
FROM master
WHERE master.ID NOT IN
(SELECT slave.ID FROM slave WHERE master.ID=slave.ID);
SELECT *
FROM slave
WHERE slave.ID NOT IN
(SELECT master.ID FROM master WHERE slave.ID=master.ID);
如果從行指主行不存在,刪除。
如果從行不用於主行存在,請插入。
這不是最好的解決方案,但很簡單。
非規範化,將文本數據放入MyISAM表並將其鏈接到InnoDB表(雖然MyISAM不會強制執行參照完整性)... –
好的第一個問題,好奇的答案,這帶來並歡迎使用stackoverflow。 – stefgosselin
嘿謝謝。雖然反規範化似乎很簡單,有一兩件事我很擔心的是,就像OMG注意參照完整性:沒有交易或F鍵,以確保存儲在MyISAM錶行是理智的,以防止指的是不存在的行搜索結果或相反亦然。 – jjj