Resumo : neste tutorial, você aprenderá sobre o índice de texto completo do MySQL e como usá-lo para realizar pesquisas de texto eficientes.
Introdução ao índice de texto completo do MySQL
O índice de texto completo do MySQL é um tipo de índice que permite realizar pesquisas de texto eficientes. O índice de texto completo tem o tipo FULLTEXT
.
MySQL suporta índices de texto completo para tabelas InnoDB ou MyISAM com colunas CHAR , VARCHAR e TEXT .
Observe que o suporte para índice de texto completo no MySQL está disponível apenas para tabelas InnoDB a partir da versão 5.6.
O MySQL permite que você crie um FULLTEXT
índice na CREATE TABLE
instrução no momento da criação da tabela ou adicione-o à tabela posteriormente usando ALTER TABLE
ou CREATE FULLTEXT INDEX
.
O MySQL fornece funções de pesquisa de texto completo, como MATCH()
e AGAINST()
, que você pode usar para pesquisar colunas incluídas nos índices de texto completo.
Criando um índice de texto completo do MySQL
O seguinte ilustra como criar um índice de texto completo para uma ou mais colunas de uma tabela:
CREATE TABLE tbl_name(
column1 constaint,
column2 constaint,
...,
FULLTEXT(column1, column2)
);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Nesta sintaxe, você coloca uma lista de nomes de colunas separados por vírgula entre parênteses após a FULLTEXT
palavra-chave.
Por exemplo, o seguinte cria uma nova tabela chamada posts
que possui um índice de texto completo que inclui as colunas title
e :body
CREATE TABLE posts (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
body TEXT,
FULLTEXT KEY (title, body)
);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Adicionando um índice de texto completo a uma tabela existente usando a instrução ALTER TABLE
O MySQL permite adicionar um índice de texto completo a uma tabela existente usando a ALTER TABLE
instrução:
ALTER TABLE tbl_name
ADD FULLTEXT(column1, column2,…);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Nesta sintaxe:
- Primeiro, especifique o nome da tabela na qual deseja criar o índice após as
ALTER TABLE
palavras-chave. - Segundo, use a
ADD FULLTEXT
cláusula para definir oFULLTEXT
índice para uma ou mais colunas da tabela.
O exemplo a seguir cria a tabela posts e adiciona um índice de texto completo usando a ALTER TABLE
instrução:
Primeiro, crie a posts
tabela:
CREATE TABLE posts (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
body TEXT
);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Observe que você deve eliminar a tabela posts se a tiver criado antes de usar a DROP TABLE
instrução antes de executar a CREATE TABLE
instrução acima.
Segundo, adicione um índice de texto completo à posts
tabela:
ALTER TABLE posts
ADD FULLTEXT(title, body);
Adicionando um índice de texto completo a uma tabela usando a instrução CREATE INDEX
É possível usar a CREATE FULLTEXT INDEX
instrução para definir um índice de texto completo nas colunas de uma tabela da seguinte forma:
CREATE FULLTEXT INDEX index_name
ON tbl_name(column1, column2,...);
Por exemplo, o seguinte usa a CREATE FULLTEXT INDEX
instrução para criar um índice de texto completo para a coluna title
e body
da posts
tabela:
CREATE FULLTEXT INDEX idx_fts
ON posts(title, body);
Nesta instrução, o nome do índice de texto completo é idx_fts
.
Removendo um índice de texto completo
Para remover um FULLTEXT
índice, você usa a ALTER TABLE ... DROP INDEX
instrução:
ALTER TABLE tbl_name
DROP INDEX index_name;
Por exemplo, a instrução a seguir exclui o idx_fts
índice da posts
tabela:
ALTER TABLE posts
DROP INDEX idx_fts;
Um exemplo completo de índice de texto completo do MySQL
Primeiro, crie uma posts
tabela com um índice de texto completo que inclua as colunas title
e :body
CREATE TABLE posts (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
body TEXT,
FULLTEXT KEY (body, title)
);
Linguagem de código: PHP ( php )
Segundo, insira algumas linhas na posts
tabela:
INSERT INTO posts (title, body) VALUES
('Introduction to MySQL', 'MySQL is an open-source relational database management system.'),
('MySQL Data Types', 'MySQL supports various data types, including INT, VARCHAR, and TEXT.'),
('MySQL Indexing', 'Proper indexing is crucial for optimizing MySQL query performance.'),
('MySQL Joins', 'Learn about different types of joins in MySQL, such as INNER JOIN and LEFT JOIN.'),
('MySQL Security Best Practices', 'Secure your MySQL database by following recommended security practices.'),
('MySQL Backup and Restore', 'Regularly backup your MySQL database to prevent data loss.'),
('MySQL Stored Procedures', 'Create reusable SQL code with MySQL stored procedures.'),
('MySQL Transactions', 'Ensure data consistency and integrity using MySQL transactions.'),
('MySQL Performance Tuning', 'Optimize the performance of your MySQL database for better efficiency.'),
('MySQL Tools and Utilities', 'Explore tools like MySQL Workbench for managing and interacting with MySQL databases.');
Linguagem de código: JavaScript ( javascript )
Terceiro, realize uma pesquisa de texto completo usando as funções MATCH()
eAGAINST()
para encontrar as postagens que contêm a palavra database
:
SELECT
id,
title,
body
FROM
posts
WHERE
MATCH (title, body) AGAINST (
'database' IN NATURAL LANGUAGE MODE
);
Linguagem de código: JavaScript ( javascript )
Saída:
+----+-------------------------------+-------------------------------------------------------------------------+
| id | title | body |
+----+-------------------------------+-------------------------------------------------------------------------+
| 1 | Introduction to MySQL | MySQL is an open-source relational database management system. |
| 5 | MySQL Security Best Practices | Secure your MySQL database by following recommended security practices. |
| 6 | MySQL Backup and Restore | Regularly backup your MySQL database to prevent data loss. |
| 9 | MySQL Performance Tuning | Optimize the performance of your MySQL database for better efficiency. |
+----+-------------------------------+-------------------------------------------------------------------------+
4 rows in set (0.01 sec)
Linguagem de código: JavaScript ( javascript )
Resumo
- Use
FULLTEXT
para definir um índice de texto completo que inclua uma ou mais colunas naCREATE TABLE
instrução. - Use
ALTER TABLE ... ADD FULLTEXT
a instrução para adicionar umFULLTEXT
índice a uma tabela existente. - Use
CREATE FULLTEXT INDEX
a instrução para criar um índice para uma ou mais colunas de uma tabela existente. - Use
ALTER TABLE ... DROP INDEX
a instrução para remover umFULLTEXT
índice existente.