Mysql
如何在 MySql 8 上啟用全文搜尋?
我正在使用 MySql 8。我想加快對錶格的搜尋速度
select * FROM dirctory_coop where name like '%mystr%';
有人提到使用全文搜尋 - https://dev.mysql.com/doc/refman/8.0/en/fulltext-search.html。但是,我對此有疑問。下面是我的表…
mysql> desc directory_coop; +----------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+----------------+ | id | int | NO | PRI | NULL | auto_increment | | name | varchar(250) | NO | | NULL | | | enabled | tinyint(1) | NO | | NULL | | | phone_id | int | YES | MUL | NULL | | | email_id | int | YES | MUL | NULL | | | web_site | longtext | NO | | NULL | | +----------+--------------+------+-----+---------+----------------+
我嘗試了以下語句來更新我的列定義,但出現以下錯誤…
mysql> alter table directory_coop modify column name FULLTEXT; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FULLTEXT' at line 1 mysql> alter table directory_coop modify name FULLTEXT; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FULLTEXT' at line 1
我還需要做什麼來啟用全文搜尋應該提供的性能優化?
您必須添加或創建一個像
ALTER TABLE directory_coop ADD FULLTEXT idx_name(name);
有關更多資訊,請閱讀手冊ALTER TABLE
您必須做的第一件事是創建一個
FULLTEXT
索引,如下所示:ALTER TABLE directory_coop ADD FULLTEXT name_ftndx (name);
這只是開始。
您需要做的下一件事是了解使用
FULLTEXT
索引的 SQL 語法。我在 DBA StackExchange 中有很多關於使用它們的文章。
這是一個很好的例子:為什麼全文搜尋返回的行數比 LIKE 少。這將向您展示使用 LIKE 和使用 MATCH 函式之間的區別。
警告
請注意InnoDB FULLTEXT Index 中不包含 36 個單詞。
我在 DBA StackExchange 中提到過兩次
Aug 05, 2019
:獲取 InnoDB 全文索引的停用詞May 05, 2018
: Mysql全文搜尋不返回任何結果