2011-03-15 94 views
3

是否可以在VIEW上創建全文索引?在VIEW上創建全文索引

如果是這樣,給定VIEW上的兩列column1column2,那麼完成此操作的SQL是什麼?

我想這樣做的原因是我有兩個非常大的表,我需要在每個表上對單個列進行FULLTEXT搜索併合並結果。結果需要作爲一個單元進行排序。

對此提出建議?

編輯:這是我嘗試創建一個UNION並按每個語句評分進行排序。

(SELECT a_name AS name, MATCH(a_name) AGAINST('$keyword') as ascore 
    FROM a WHERE MATCH a_name AGAINST('$keyword')) 
UNION 
(SELECT s_name AS name,MATCH(s_name) AGAINST('$keyword') as sscore 
    FROM s WHERE MATCH s_name AGAINST('$keyword')) 
ORDER BY (ascore + sscore) ASC 

sscore未被識別。

回答

2

MySQL不允許任何形式的索引在視圖上,只是它的基礎表。原因是因爲當你從中選擇一個視圖時,MySQL只會實現一個視圖,因爲底層表可能會隨時改變數據。如果您的視圖返回了1000萬行,則必須將全文索引應用於,每次您從中選擇,這會花費大量時間。

如果你想要完整的索引功能,那麼你可以堅持你發佈的SQL腳本,並手動(或cronjob腳本)每晚更新兩個表的全文索引(或每小時if你在高流量的市場)。