一般在創(chuàng)建表時(shí)啟用全文本搜索。 create table 語句接受 fulltext 子句,它給出被索引列的一個(gè)逗號(hào)分隔的列表。
下面的 CREATE 語句演示了 FULLTEXT 子句的使用:
輸入:
create?table?productnotes ( note_id??????int????????????????????NOT?NULL?AUTO_INCREMENT, prod_id??????char(10)???????????????NOT?NULL, note_date??datetime?????????????????NOT?NULL, note_text???text????????????????????NULL, primary?key(note_id), FULLTEXT(note_text) )ENGINE?=?MyISAM;
分析:這些列中有一個(gè)名為 note_text 的列,為了進(jìn)行全文本搜索,mysql根據(jù)子句 FULLTEXT(note_text) 的指示對(duì)它進(jìn)行索引。這里的FULLTEXT 索引單個(gè)列,如果需要也可以指定多個(gè)列。
在定義之后,MySQL自動(dòng)維護(hù)該索引。在增加、更新或刪除行時(shí),索引隨之自動(dòng)更新。
可以在創(chuàng)建表時(shí)指定 FULLTEXT ,或者在稍后指定(在這種情況下所有已有數(shù)據(jù)必須立即索引)。
不要在導(dǎo)入數(shù)據(jù)時(shí)使用 FULLTEXT 更新索引要花時(shí)間,雖然不是很多,但畢竟要花時(shí)間。如果正在導(dǎo)入數(shù)據(jù)到一個(gè)新表,此時(shí)不應(yīng)該啟用 FULLTEXT 索引。應(yīng)該首先導(dǎo)入所有數(shù)據(jù),然后再修改表,定義 FULLTEXT 。這樣有助于更快地導(dǎo)入數(shù)據(jù)(而且使索引數(shù)據(jù)的總時(shí)間小于在導(dǎo)入每行時(shí)分別進(jìn)行索引所需的總時(shí)間)。