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
- 在laravel中使用mysql fulltext全文索引代替like查詢提高效能LaravelMySql索引
- MySQL——索引實現原理MySql索引
- Elasticsearch 索引容量管理實踐Elasticsearch索引
- MySQL——索引優化實戰MySql索引優化
- mysql索引底層實現MySql索引
- ClickHouse主鍵索引最佳實踐索引
- 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 · 最佳實踐 · 如何索引 JSON 欄位 (阿里雲 RDS-資料庫核心組 )MySql索引JSON阿里資料庫
- MySQL索引系列:全文索引MySql索引
- MySQL 字串索引和字首索引MySql字串索引
- MySQL實戰 | 為什麼要使用索引?MySql索引
- MySQL的索引型別和實現原理MySql索引型別
- MySQL 索引初探MySql索引
- Mysql索引使用MySql索引
- MySQL索引原理MySql索引
- MySQL 二 索引MySql索引
- MySQL 索引 +explainMySql索引AI
- MySQL的索引MySql索引
- MySQL InnoDB 索引MySql索引
- Mysql加鎖與實踐MySql
- [MySql]explain用法及實踐MySqlAI
- mysql組合索引,abc索引命中MySql索引
- MySQL 唯一索引和普通索引MySql索引
- Mysql資料實時同步實踐MySql
- 【MySQL(2)| MySQL索引機制】MySql索引
- MySql(一) 淺析MySql索引MySql索引
- 【真·乾貨】MySQL 索引及優化實戰MySql索引優化
- MySQL 聚簇索引 和覆蓋索引MySql索引