MySQL創(chuàng)建全文索引分享
使用索引時(shí)數(shù)據(jù)庫性能優(yōu)化的必備技能之一。在MySql數(shù)據(jù)庫中,有四種索引:聚焦索引(主鍵索引)、普通索引、唯一索引以及我們這里將要介紹的全文索引(FUNLLTEXT INDEX)。
全文索引(也稱全文檢索)是目前搜索引擎使用的一種關(guān)鍵技術(shù)。它能夠利用【分詞技術(shù)】等多種算法智能分析出文本文字中關(guān)鍵詞的頻率和重要性,然后按照一定的算法規(guī)則智能地篩選出我們想要的搜索結(jié)果。
在MySql中,創(chuàng)建全文索引相對(duì)比較簡(jiǎn)單。例如:我們有一個(gè)文章表(article),其中有主鍵ID(id)、文章標(biāo)題(title)、文章內(nèi)容(content)三個(gè)字段?,F(xiàn)在我們希望能夠在title和content兩個(gè)列上創(chuàng)建全文索引,article表及全文索引的創(chuàng)建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;
上面就是在創(chuàng)建表的同時(shí)創(chuàng)建全文索引的SQL示例。此外,如果我們要給已經(jīng)存在的表的指定字段創(chuàng)建全文索引,同樣以article表為例,我們可以使用如下SQL語句進(jìn)行創(chuàng)建:
ALTER TABLE article ADD FULLTEXT INDEX fulltext_article(title,content);
在MySql中創(chuàng)建全文索引之后,現(xiàn)在就該了解如何使用了。眾所周知,在數(shù)據(jù)庫中進(jìn)行模糊查詢是使用like關(guān)鍵字進(jìn)行查詢的,例如:
SELECT * FROM article WHERE content LIKE ‘%查詢字符串%';
那么,我們?cè)谑褂萌乃饕策@樣使用嗎?當(dāng)然不是,我們必須使用特有的語法才能使用全文索引進(jìn)行查詢,例如,我們想要在article表的title和content列中全文檢索指定的查詢字符串,我們可以如下編寫SQL語句:
SELECT * FROM article WHERE MATCH(title,content) AGAINST (‘查詢字符串');
強(qiáng)烈注意:MySql自帶的全文索引只能用于數(shù)據(jù)庫引擎為MYISAM的數(shù)據(jù)表,如果是其他數(shù)據(jù)引擎,則全文索引不會(huì)生效。此外,MySql自帶的全文索引只能對(duì)英文進(jìn)行全文檢索,目前無法對(duì)中文進(jìn)行全文檢索。如果需要對(duì)包含中文在內(nèi)的文本數(shù)據(jù)進(jìn)行全文檢索,我們需要采用Sphinx(斯芬克斯)/Coreseek技術(shù)來處理中文。
注:目前,使用MySql自帶的全文索引時(shí),如果查詢字符串的長(zhǎng)度過短將無法得到期望的搜索結(jié)果。MySql全文索引所能找到的詞默認(rèn)最小長(zhǎng)度為4個(gè)字符。另外,如果查詢的字符串包含停止詞,那么該停止詞將會(huì)被忽略。
注:如果可能,請(qǐng)盡量先創(chuàng)建表并插入所有數(shù)據(jù)后再創(chuàng)建全文索引,而不要在創(chuàng)建表時(shí)就直接創(chuàng)建全文索引,因?yàn)榍罢弑群笳叩娜乃饕室摺?/p>
相關(guān)文章
mysql導(dǎo)出查詢結(jié)果到csv的實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄猰ysql導(dǎo)出查詢結(jié)果到csv的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04
Mysql?刪除重復(fù)數(shù)據(jù)保留一條有效數(shù)據(jù)(最新推薦)
這篇文章主要介紹了Mysql?刪除重復(fù)數(shù)據(jù)保留一條有效數(shù)據(jù),實(shí)現(xiàn)原理也很簡(jiǎn)單,mysql刪除重復(fù)數(shù)據(jù),多個(gè)字段分組操作,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02
ubuntu?22.04安裝mysql?8.0步驟與避坑指南
MySQL最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),在WEB應(yīng)用方面MySQL是最好的關(guān)系數(shù)據(jù)庫管理系統(tǒng)應(yīng)用軟件之一,這篇文章主要給大家介紹了關(guān)于ubuntu?22.04安裝mysql?8.0步驟與避坑指南的相關(guān)資料,需要的朋友可以參考下2023-12-12
LEFT JOIN關(guān)聯(lián)表中ON,WHERE后面跟條件的區(qū)別
本文主要介紹了LEFT JOIN關(guān)聯(lián)表中ON,WHERE后面跟條件的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
mysql如何實(shí)現(xiàn)最大連接數(shù)
云服務(wù)器同時(shí)最大連接數(shù),也就是說可以有一千個(gè)用戶,那么mysql如何實(shí)現(xiàn)最大連接數(shù),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12
mysql忘記root密碼的解決辦法(針對(duì)不同mysql版本)
這篇文章主要介紹了mysql忘記root密碼的解決辦法(針對(duì)不同mysql版本),文章通過代碼示例和圖文結(jié)合的方式給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-06-06
一文搞定MySQL binlog/redolog/undolog區(qū)別
這篇文章主要介紹了一文搞定MySQL binlog/redolog/undolog區(qū)別,作為開發(fā),我們重點(diǎn)需要關(guān)注的是二進(jìn)制日志(binlog)和事務(wù)日志(包括redo log和undo log),本文接下來會(huì)詳細(xì)介紹這三種日志,需要的朋友可以參考下2023-04-04

