mysql 全文索引 重建 mysql建立全文索引

2021-10-18 10:02:05 字數 1355 閱讀 8020

使用索引時資料庫效能優化的必備技能之一。在mysql資料庫中,有四種索引:聚焦索引(主鍵索引)、普通索引、唯一索引以及我們這裡將要介紹的全文索引(funlltext index)。

在mysql中,建立全文索引相對比較簡單。例如:我們有乙個文章表(article),其中有主鍵id(id)、文章標題(title)、文章內容(content)三個字段。現在我們希望能夠在title和content兩個列上建立全文索引,article表及全文索引的建立sql語句如下:

create table `article` (

`id` int(10) unsigned not null auto_increment,

`title` varchar(200) default null,

`content` text,

primary key (`id`),

fulltext key `title` (`title`,`content`)

) engine=myisam default charset=utf8;

上面就是在建立表的同時建立全文索引的sql示例。此外,如果我們要給已經存在的表的指定字段建立全文索引,同樣以article表為例,我們可以使用如下sql語句進行建立:

alter table article add fulltext index fulltext_article(title,content);

在mysql中建立全文索引之後,現在就該了解如何使用了。眾所周知,在資料庫中進行模糊查詢是使用like關鍵字進行查詢的,例如:

select * from article where content like 『%查詢字串%』;

那麼,我們在使用全文索引也這樣使用嗎?當然不是,我們必須使用特有的語法才能使用全文索引進行查詢,例如,我們想要在article表的title和content列中全文檢索指定的查詢字串,我們可以如下編寫sql語句:

select * from article where match(title,content) against (『查詢字串』);

強烈注意:mysql自帶的全文索引只能用於資料庫引擎為myisam的資料表,如果是其他資料引擎,則全文索引不會生效。此外,mysql自帶的全文索引只能對英文進行全文檢索,目前無法對中文進行全文檢索。如果需要對包含中文在內的文字資料進行全文檢索,我們需要採用sphinx(斯芬克斯)/coreseek技術來處理中文。

注:目前,使用mysql自帶的全文索引時,如果查詢字串的長度過短將無法得到期望的搜尋結果。mysql全文索引所能找到的詞預設最小長度為4個字元。另外,如果查詢的字串包含停止詞,那麼該停止詞將會被忽略。

注:如果可能,請盡量先建立表並插入所有資料後再建立全文索引,而不要在建立表時就直接建立全文索引,因為前者比後者的全文索引效率要高。

mysql 全文索引 重建 關於MySql全文索引

從 mysql 4.0 開始就支援全文索引功能,但是 mysql 預設的最小索引長度是 4。如果是英文預設值是比較合理的,但是中文絕大部分詞都是2個字元,這就導致小於4個字的詞都不能被索引,全文索引功能就形同虛設了。國內的空間商大部 分可能並沒有注意到這個問題,沒有修改 mysql 的預設設定。為什...

mysql全文索引的坑 MySQL全文索引問題

我有乙個包含以下資料的 文章 mysql select from articles id title body 1 mysql tutorial dbms stands for database 2 how to use mysql well after you went through a 3 o...

mysql全文索引

了解 solr 之後 發現全文索引也能做檢索 故了解了下 筆記如下 建立全文索引 alter table table add fulltext index fulltext table 列1 列2 查詢方式 select from table where match 列1 列2 against 查詢...