Artigo SQL Magazine 52 - Garantindo desempenho com o operador LIKE

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (0)  (0)

Artigo da Revista SQL Magazine edição 52.

Esse artigo faz parte da revista SQL Magazine edição 52. Clique aqui para ler todos os artigos desta edição

SQL

Garantindo desempenho com o operador LIKE

Sim, isso é possível!

 

Neste artigo serão abordadas técnicas para garantir um bom desempenho no PostgreSQL mesmo quando o operador LIKE é utilizado. Este recurso padrão do SQL, tão utilizado por desenvolvedores e ao mesmo tempo temido por DBAs, precisa de certos ajustes no SGBD para não se tornar um pesadelo em ambientes de médio e grande porte.

O operador LIKE e suas deficiências

O operador lógico LIKE, introduzido no padrão SQL92, é um poderoso artifício para comparação de textos em bancos de dados relacionais. Com o operador, podem ser utilizados os caracteres “%” (percentagem) e “_” (underline), os quais têm significados especiais quando ocorrem na expressão a ser testada. O “%” indica que um ou mais caracteres podem aparecer no texto. Já o “_” representa um único caractere qualquer no texto, e não será tratado neste artigo.

Por exemplo, para buscarmos registros cujo nome começa com “JOSE”, usamos a expressão “JOSE %”. Para filtrarmos os nomes que finalizam com “FILHO”, usamos “% FILHO”. E para listar os que possuem “CARLOS” no meio do nome, usamos a expressão “% CARLOS %”.

Na Figura 1 são exibidas as instruções SQL para criação da tabela PESSOAS que será utilizada nos testes de busca neste estudo. A coluna “nome”, de tipo textual, será considerada nestas comparações. A codificação do banco de dados em questão é a LATIN1, a mais adequada para trabalhar com textos no idioma português do Brasil (ISO-8859-1). Para fazer tal tarefa, utilizaremos a ferramenta pgAdmin III, porém partiremos do principio que esta já está em funcionamento. Sendo assim, no pgAdmin III abra o menu Tools ? Query e execute a instrução SQL conforme ilustrado na Figura 1.

 

Figura 1. Script para criação da tabela PESSOA para testes.

 

Para que o objetivo principal deste estudo seja alcançado, é preciso que a tabela possua uma quantidade razoável de linhas. Para a elaboração deste artigo, foi utilizada base de dados de pessoas com cerca de 10,5 milhões de registros. Tendo poucas linhas, o planejador (planner) do PostgreSQL sempre efetuará leituras seqüenciais (full scans) na tabela, por esta ser a opção menos custosa nessa situação.

As diversas situações para o emprego do operador LIKE serão exploradas nas seções seguintes, a começar do caso em que o caractere “%” aparece ao final da expressão.

Primeiro caso: “%” ao final

Na primeira situação, consideremos uma típica busca parcial de nome: todos os registros que comecem com “JOSE CARLOS”, ou seja, quando o usuário não tem conhecimento ou certeza do sobrenome desejado. Na Listagem 1 temos a instrução SQL correspondente a este exemplo.

 

Listagem 1. Busca com operador LIKE e caractere % ao final.

SELECT *

FROM pessoas

WHERE nome LIKE 'JOSE CARLOS %';

 

Para analisarmos o plano de execuções de uma consulta SQL, ou seja, os caminhos computacionais que o SGBD fará para atender à instrução, utilizamos a cláusula EXPLAIN (específica do PostgreSQL) antes desta última. A saída contém informações úteis para o DBA, como número de linhas esperada, custo aproximado da instrução para o servidor, abordagens de junções, utilização de índices, entre outras coisas. Desta forma, a instrução não chega a ser executada no servidor, apenas o plano é montado e exibido. Para mostrar o plano e executar definitivamente a instrução SQL é preciso usar a cláusula EXPLAIN ANALYZE, como ilustrado na Figura 2.

 

Figura 2. Explicação do plano de execuções em formato textual.

 

Com a ferramenta pgAdmin III, podemos visualizar os planos de execução do PostgreSQL de uma forma mais amigável em modo gráfico, tal como na ferramenta Query Analyzer da Microsoft. Para fazer a análise e ao mesmo tempo executar a instrução SQL no pgAdmin, na janela Query Tool acione o menu Query ? Explain Options ? Analyze. Em seguida, digite o comando SQL e acione o menu Query ? Explain ou simplesmente pressione a tecla F7 ou clique no botão . O plano de execução da consulta SQL em questão é exibido na segunda aba, Explain, na parte inferior da tela (vide Figura 3). Veja na Tabela 1 o significado dos ícones mostrados para o plano de execução.

Figura 3. "

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?