Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Problema com select e muitos registros, usando like


Diego Ronan

Pergunta

Pessoas

Estou com o problema:

Tenho que fazer uma pesquisa no banco de dados usando o like para buscar o nome de determinada pessoa.

Como a tabela em questão tem 190 mil registros e cerca de 40 colunas, todas povoadas, criei uma view com os dados que preciso (codigo e nome) e estou fazendo a consulta usando o like por esta view...

O problema é:

Fiz um sisteminha que le um arquivo txt, pega as informações do arquivo, cria um word e disponibiliza para o usuario, caso a caso.

Este txt tem cerca de 200 linhas, ou seja, 200 nomes para o SQL fazer a consulta.

O like sobrecarrega muito o banco, acaba caindo a excução depois de cerca de 1 minuto.

Tem alguma otimização no sql que posso fazer? Alguma outra forma de fazer esta consulta?

Meu codigo:

Procedure

ALTER PROCEDURE [dbo].[Proc_TbConsulta]
        @nome  varchar(350)
AS
BEGIN

    SET NOCOUNT ON;

    SELECT codigo, nome from Vw_TbConsulta 
    where nome like ''+@nome +'%'

END
View
ALTER VIEW [dbo].[Vw_TbConsulta]
AS
SELECT        codigo, nome 
FROM            dbo.TbConsulta (nolock)

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Boa tarde Diego,

Cerca de 190 mil linhas para DB é relativamente pouco... rs.

O que pode fazer para melhorar a performance é criar um índice para a view. Creio que isto deva melhorar significativamente a performance. Em alguns casos, pode-se clusterizar, mas cuidado: a clusterização diminui a performance de inserção e exclusão na tabela. Sendo assim, caso tenha muita manipulação dos dados na tabela, deve-se analisar o custo/beneficio, ok?

Outra coisa: indice em uma view influencia diretamente a tabela referenciada. Faça os testes.

O select não necessita das aspas simples antes da variável. Pode ser assim:

SELECT codigo, nome from Vw_TbConsulta 
    where nome like @nome +'%'

No segundo script, pode-se tentar o order by pelo nome.

Link para o comentário
Compartilhar em outros sites

  • 0

rs... diferença boa.

De tempos em tempos é sempre bom recriar o indice. Quando a tabela possui muita manipulação, sua recriação deve ser com mais frequência. O certo seria você criar um plano de Manutenção.

Dê uma olhada na documentação da Microsoft. Há várias funções no sql que podem ser utilizadas para analise de indices em tabelas. :.)

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...