Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save andrekutianski/dafa45bb93574ca8aeb645cbf6a8afd1 to your computer and use it in GitHub Desktop.
Save andrekutianski/dafa45bb93574ca8aeb645cbf6a8afd1 to your computer and use it in GitHub Desktop.
Diferença entre Índice "INDEX" e Índice "FULLTEXT" no PostgreSQL em Laravel

Diferença entre Índice "INDEX" e Índice "FULLTEXT" no PostgreSQL em Laravel

  1. Objetivo Principal:

    • Índice (INDEX): O objetivo principal do índice padrão é acelerar a busca por registros em uma tabela, melhorando o desempenho das consultas de igualdade e intervalo.
    • Índice FULLTEXT: Os índices FULLTEXT são usados para pesquisas de texto completo, permitindo a busca de palavras ou frases dentro de texto, como artigos, descrições ou conteúdo textual.
  2. Tipo de Dados:

    • Índice (INDEX): Funciona bem com qualquer tipo de dado, incluindo números, datas e texto, mas é mais comumente usado com colunas numéricas ou de data.
    • Índice FULLTEXT: Projetado especificamente para pesquisas de texto, sendo ideal para colunas que armazenam texto longo, como corpo de texto ou documentos.
  3. Comparação de Desempenho:

    • Índice (INDEX): Melhora significativamente o desempenho de consultas que envolvem igualdade, comparações de intervalo e junções.
    • Índice FULLTEXT: Melhora o desempenho de consultas de pesquisa de texto completo, especialmente para consultas complexas que envolvem palavras-chave ou frases.
  4. Sintaxe no Laravel:

    • Índice (INDEX): No Laravel, você pode criar um índice usando o método index nas migrações do Schema Builder.
    • Índice FULLTEXT: No Laravel, você pode criar um índice FULLTEXT usando o método fulltext nas migrações do Schema Builder.
  5. Operações Suportadas:

    • Índice (INDEX): Principalmente suporta operações de igualdade, como = e IN, além de melhorar a eficiência de junções e classificações.
    • Índice FULLTEXT: Suporta consultas de texto completo, como MATCH AGAINST no SQL, permitindo pesquisas mais avançadas, como busca por similaridade textual.
  6. Consulta de Exemplo:

    • Índice (INDEX): Uma consulta típica pode ser algo como SELECT * FROM produtos WHERE preco > 100;.
    • Índice FULLTEXT: Uma consulta de exemplo pode ser SELECT * FROM artigos WHERE MATCH (conteudo) AGAINST ('palavra-chave');, procurando por 'palavra-chave' no conteúdo dos artigos.
  7. Tamanho do Índice:

    • Índice (INDEX): Os índices padrão tendem a ser menores em tamanho em comparação com índices FULLTEXT.
    • Índice FULLTEXT: Os índices FULLTEXT podem ser substancialmente maiores, pois armazenam informações adicionais para facilitar pesquisas de texto completo.
  8. Atualização de Dados:

    • Índice (INDEX): Os índices padrão são mais eficientes em termos de atualização de dados, pois requerem menos sobrecarga em comparação com índices FULLTEXT.
    • Índice FULLTEXT: A atualização de dados em colunas com índices FULLTEXT pode ser mais lenta devido à necessidade de reindexar o texto completo.
  9. Uso Adequado:

    • Índice (INDEX): Use quando precisar melhorar o desempenho de consultas de busca rápida ou junções em colunas não textuais.
    • Índice FULLTEXT: Use quando precisar executar pesquisas avançadas em texto completo, como busca em documentos ou conteúdo textual.

Lembrando que a escolha entre esses tipos de índice depende das necessidades específicas do seu aplicativo e das consultas que você planeja realizar. Ambos têm seus usos adequados e podem até ser usados em conjunto em situações apropriadas para otimizar a pesquisa em um banco de dados PostgreSQL em uma aplicação Laravel.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment