本文從以下幾個面向介紹下MySQL全文索引的基礎知識:
1.MySQL全文索引的幾個注意事項
2.全文索引的語法
3.幾種搜尋類型的簡介
4.幾個搜尋類型的實例
全文索引的幾個注意事項
1.搜尋必須在類型為fulltext的索引列上,match中指定的列必須在fulltext中指定過
2.僅能應用在表引擎為MyIsam類型的表中(MySQL 5.6以後也可以用在Innodb表引擎中了)
3.僅能再char、varchar、text類型的列上面創建全文索引
4.像普通索引一樣,可以在定義表時指定,也可以在創建表後添加或者修改
5.對於一個大數量級記錄插入,向沒有索引的表中插入數據後創建索引比向有索引的數據表中插入的過程快很多
6.搜尋字串必須是一個常數字串,不能是表的列名
7.在搜尋記錄的選擇性超過50%的時候,認為沒有匹配(只在自然搜尋中限制)
全文索引搜尋語法
MATCH (列名1, 列名2,…) AGAINST (搜索字符串 [搜索修饰符])
其中在match裡面指定的列名1、2等,就是在建立全文索引中指定的列名, 後面的搜尋修飾符說明如下:
reee 幾種搜尋類型的簡介上面的搜尋修飾符,實際上說明了3種全文搜尋類型IN NATURAL LANGUAGE MODE簡介:預設的搜尋形式(不加任何搜尋修飾符或修飾符為IN NATURAL LANGUAGE MODE 的情況)特點:對於搜尋字串中的字元都解析為正常的字符,沒有特殊意義對屏蔽字符列表中的字串進行過濾當記錄的選擇性超過50%的時候,通常被認為是不匹配。 回傳記錄依照記錄的相關性進行排序顯示IN BOOLEAN MODE簡介:布林模式搜尋(搜尋修飾符為IN BOOLEAN MODE的情況)特徵:會依照一定的規則解析字串中的特殊字符的意義,進行一些邏輯意義的規則。如:某個單字必須出現,或不能出現等。 這種類型的搜索返回的記錄是不按照相關性進行排序的WITH QUERY EXPANSION簡介:一種稍微複雜的搜索形式,實際上是進行了2次自然搜索,可以返回記錄直接簡介性關係的記錄,修飾詞IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION 或WITH QUERY EXPANSION modifier特點:這種類型的搜素,實際上提供了一種間接的搜尋功能,例如:我搜尋某個詞,而且返回的第一行中卻不包含搜尋字詞中的任意字串。可以根據第一次搜尋結果的記錄詞進行第二次匹配,從而可能找到一些間接關係的匹配記錄。 幾種搜尋類型的實例介紹IN NATURAL LANGUAGE MODE模式下的應用:還是應用在product表,其中在name字段我們建立了全文索引,因為我需要根據關鍵詞在name列中匹配出相關詞記錄Sql語句如下:search_modifier: { IN NATURAL LANGUAGE MODE | IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION | IN BOOLEAN MODE | WITH QUERY EXPANSION }時間還不錯,在將近87w的記錄中命中了1w多條,耗時1.15秒,效果還是不錯:在預設的情況下已經根據相關性:在預設的情況下已經根據相關性從高到低返回記錄了我們可以SELECT match(name) against('auto') FROM product 查看記錄的相關性值,值都在0和1之間, 0代表記錄不符 重要的幾個特性:1. 哪些詞會被忽略
搜尋詞太短預設全文索引認為4個以上字符的單字是有效詞,我們可以在組態中修改ft_min_word_len進行配置
屏蔽詞表中的詞
預設的全文索引將一些常用詞屏蔽掉,因為這些詞太常見了,沒有任何語義作用,所以搜尋過程中是忽略不計的。當然這個清單也是可以配置的。
SELECT * FROM product WHERE match(name) against(‘auto')可見,我們對搜尋的控制又多了一些,看起來「高大上」了些。 實際上,上面的操作隱含了幾個意思:
加號:相當於and
減號:相當於not
1. 没有50%记录选择性的限制,即使搜索结果记录超过总数的50%也同样返回结果
2. 不会自动的按记录的相关性进行降序排序
3.
可以直接应用在没有创建fulltext的全文索引上,但是这样会查询的非常慢,所以说还是别用了。
4. 支持最小、最大单词长度
5.
应用屏蔽词列表
布尔搜索支持的操作符:
n 加号 +:指示修饰的单词必须出现在记录中
n 减号 -:指示修饰的单词必须不能出现在记录中
n
没有任何操作符:单词可有可无,但是包含该词的记录相关性高
n 双引号 “ : 将一个词组作为一个匹配。如:”one word” 匹配one
word在一起的单词
下面是官方的一些实例:
至少包含一个词的记录 ‘apple banana' 必须包含着两个词 ‘+apple +juice' 必须包含apple,包含macintosh的记录相关性高,也可以不包含 ‘+apple macintosh' 必须包含apple且不能喊有macintosh ‘+apple -macintosh' 查找apple开头单词的记录 ‘apple*' 完整匹配some words单词 ‘”some words”‘
了解了基本的mysql全文索引知识,觉得它的全文索引比like当然是强了很多。但是面对高级的搜索还是略显简陋,且性能问题也是担忧。
以上就是MySQL全文索引应用简明教程的内容,更多相关文章请关注PHP中文网(www.php.cn)!

InnoDB使用redologs和undologs確保數據一致性和可靠性。 1.redologs記錄數據頁修改,確保崩潰恢復和事務持久性。 2.undologs記錄數據原始值,支持事務回滾和MVCC。

EXPLAIN命令的關鍵指標包括type、key、rows和Extra。 1)type反映查詢的訪問類型,值越高效率越高,如const優於ALL。 2)key顯示使用的索引,NULL表示無索引。 3)rows預估掃描行數,影響查詢性能。 4)Extra提供額外信息,如Usingfilesort提示需要優化。

Usingtemporary在MySQL查詢中表示需要創建臨時表,常見於使用DISTINCT、GROUPBY或非索引列的ORDERBY。可以通過優化索引和重寫查詢避免其出現,提升查詢性能。具體來說,Usingtemporary出現在EXPLAIN輸出中時,意味著MySQL需要創建臨時表來處理查詢。這通常發生在以下情況:1)使用DISTINCT或GROUPBY時進行去重或分組;2)ORDERBY包含非索引列時進行排序;3)使用複雜的子查詢或聯接操作。優化方法包括:1)為ORDERBY和GROUPB

MySQL/InnoDB支持四種事務隔離級別:ReadUncommitted、ReadCommitted、RepeatableRead和Serializable。 1.ReadUncommitted允許讀取未提交數據,可能導致臟讀。 2.ReadCommitted避免臟讀,但可能發生不可重複讀。 3.RepeatableRead是默認級別,避免臟讀和不可重複讀,但可能發生幻讀。 4.Serializable避免所有並發問題,但降低並發性。選擇合適的隔離級別需平衡數據一致性和性能需求。

MySQL適合Web應用和內容管理系統,因其開源、高性能和易用性而受歡迎。 1)與PostgreSQL相比,MySQL在簡單查詢和高並發讀操作上表現更好。 2)相較Oracle,MySQL因開源和低成本更受中小企業青睞。 3)對比MicrosoftSQLServer,MySQL更適合跨平台應用。 4)與MongoDB不同,MySQL更適用於結構化數據和事務處理。

MySQL索引基数对查询性能有显著影响:1.高基数索引能更有效地缩小数据范围,提高查询效率;2.低基数索引可能导致全表扫描,降低查询性能;3.在联合索引中,应将高基数列放在前面以优化查询。

MySQL學習路徑包括基礎知識、核心概念、使用示例和優化技巧。 1)了解表、行、列、SQL查詢等基礎概念。 2)學習MySQL的定義、工作原理和優勢。 3)掌握基本CRUD操作和高級用法,如索引和存儲過程。 4)熟悉常見錯誤調試和性能優化建議,如合理使用索引和優化查詢。通過這些步驟,你將全面掌握MySQL的使用和優化。

MySQL在現實世界的應用包括基礎數據庫設計和復雜查詢優化。 1)基本用法:用於存儲和管理用戶數據,如插入、查詢、更新和刪除用戶信息。 2)高級用法:處理複雜業務邏輯,如電子商務平台的訂單和庫存管理。 3)性能優化:通過合理使用索引、分區表和查詢緩存來提升性能。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3 Linux新版
SublimeText3 Linux最新版

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中