Estou usando o MySql 8. Gostaria de agilizar as pesquisas na minha tabela do formulário
select * FROM dirctory_coop where name like '%mystr%';
e alguém mencionou o uso de pesquisas de texto completo -- https://dev.mysql.com/doc/refman/8.0/en/fulltext-search.html . No entanto, estou tendo um problema com isso. Segue minha tabela...
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 | |
+----------+--------------+------+-----+---------+----------------+
Eu tentei as instruções abaixo para atualizar minha definição de coluna, mas estou recebendo os seguintes erros ...
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
O que mais preciso fazer para habilitar as otimizações de desempenho que a pesquisa de texto completo supostamente fornece?
Você tem que adicionar ou criar um INDEx como
Para mais informações leia o manual ALTER TABLE
A primeira coisa que você deve fazer é criar um
FULLTEXT
índice da seguinte forma:Isso é apenas o começo.
A próxima coisa que você precisa fazer é entender a sintaxe SQL para usar
FULLTEXT
índices.Por favor, leia a documentação do MySQL sobre índices FULLTEXT
Eu tenho muitos posts no DBA StackExchange sobre como usá-los.
Aqui está um bom exemplo para você começar: Por que a pesquisa de texto completo retorna menos linhas do que LIKE . Isso mostrará a diferença entre usar LIKE e usar a função MATCH.
Eu ainda recomendo ler o MySQL Docs antes de ler meus posts .
EMBARGO
Por favor, saiba que 36 palavras não estão incluídas em um índice InnoDB FULLTEXT .
Eu mencionei duas vezes no DBA StackExchange
Aug 05, 2019
: Obter palavras irrelevantes de um índice de texto completo do InnoDBMay 05, 2018
: A pesquisa de texto completo do Mysql não retorna nenhum resultado