MySQL FullText索引 實踐。
首先MySQL5.7版本開始提供了對 FullText 全文索引的支援,全文索引其實就是對模糊 查詢及跨列查詢的一個優化方案
比如我們有一個資訊表 Z 我們要查詢 資訊表中A列含“xx”字元和B列含有“xx”字元的所有行 我們通常是這樣:select * from Z where A like ‘%xx%’ and B like’%xx%’;
這樣一條SQL一句 效能是相當低下的 而且 不能命中索引,資料量龐大的話根本沒得玩。所以MySQL5.7版本開始對這方面的需求提出了優化方案,即引入FullText 全文索引的支援。
用法:
建立一張測試表
CREATE TABLE index_test
(
id INT PRIMARY KEY AUTO_INCREMENT,
fullname VARCHAR(255),
title VARCHAR(255),
body VARCHAR(3000)
-- FULLTEXT(title, body)`d_test``d_test`
);
給表新增索引:
-- 建立全文索引
CREATE FULLTEXT INDEX fullname_title_index ON index_test(fullname,title);
-- 查詢fullname,title欄位以 “j”開頭的所有記錄
SELECT * FROM `index_test` WHERE MATCH(fullname,title) AGAINST('j*' IN BOOLEAN MODE);
在語法上其實FullText和我們傳統的查詢還是有很多區別的
語法如下:
'資料庫 管理' 包含'資料庫'或包含'管理'的資料
'"資料庫 管理"' 不會因為空格而分隔,搜尋包含'資料庫 管理'的資料
'+資料庫 +管理' 同時包含'資料庫'和'管理'的資料
'+資料庫 -管理' 包含'資料庫'但沒有'管理'的資料
'+資料庫 管理' 包含'資料庫'的資料,有'管理'的資料優先顯示
'+資料庫 >管理' 包含'資料庫'的資料,有'管理'的資料優先顯示
'+資料庫 <管理' 包含'資料庫'的資料,有'管理'的資料優先顯示,但排位低於'>'的資料
如果需求設計到分詞的話,其實我們可以直接寫一套方案用於分詞,然後結合FullText做一個分詞查詢 就像現在的 ES框架結合IK分詞器那樣,如果全文搜尋 的場景不是特別多或者無法引入ES框架 那完全可以按這個 思路直接實現一套分詞邏輯然後配合FullText使用。
相關文章
- mysql索引型別:FULLTEXT、NORMAL、SPATIAL、UNIQUEMySql索引型別ORM
- [譯] MYSQL索引最佳實踐MySql索引
- 在laravel中使用mysql fulltext全文索引代替like查詢提高效能LaravelMySql索引
- MySQL效能優化的21個最佳實踐 和 mysql使用索引MySql優化索引
- Elasticsearch 索引容量管理實踐Elasticsearch索引
- MySQL——索引實現原理MySql索引
- ClickHouse主鍵索引最佳實踐索引
- 分割槽表索引實踐案例索引
- PHP實踐之路(目錄索引)PHP索引
- MySQL——索引優化實戰MySql索引優化
- mysql索引底層實現MySql索引
- MySQL9:索引實戰MySql索引
- MySQL實戰45講——普通索引和唯一索引MySql索引
- MySQL索引底層實現原理MySql索引
- MySQL全面瓦解23:MySQL索引實現和使用MySql索引
- 唯一性索引優化實踐索引優化
- mysql索引之字首索引MySql索引
- ElasticSearch 索引 VS MySQL 索引Elasticsearch索引MySql
- 高效能MySQL實戰(二):索引MySql索引
- MySQL — 索引MySql索引
- MySQL 索引MySql索引
- mysql索引MySql索引
- [Mysql]索引MySql索引
- mysql 索引( mysql index )MySql索引Index
- [MySql]explain用法及實踐MySqlAI
- Mysql加鎖與實踐MySql
- Ruby實踐—連線MysqlMySql
- Mysql資料實時同步實踐MySql
- MySQL索引系列:全文索引MySql索引
- MySQL 字串索引和字首索引MySql字串索引
- MySQL的索引型別和實現原理MySql索引型別
- MySQL實戰 | 為什麼要使用索引?MySql索引
- MySQL 索引 +explainMySql索引AI
- MySQL索引原理MySql索引
- MySQL InnoDB 索引MySql索引
- MySQL 索引初探MySql索引
- MySQL 二 索引MySql索引
- Mysql索引使用MySql索引