Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

108
Visualizações
SQL Server y rendimiento para búsquedas dinámicas

Me preguntaba cuáles eran las mejores prácticas para hacer una consulta en sql con un valor dinámico, digamos que tengo un Valor (nvarchar (máximo))

valor: "912345678"

 select * from AllData where Number like '%912345678%'

valor: "Miguel"

 select * from AllData where Name like '%Michael%'

valor: "Calle número 10"

 select * from AllData where Address like '%Street number 10%'

Estos enfoques son un poco lentos ya que buscar un número que tiene 9 dígitos sería más rápido sin % como este

 select * from AllData where Number like '912345678'

Uso un EDMX para hacer una conexión a una base de datos externa en C#, así:

 var Result = EDMXEntity.Entities.Where(x => (SqlFunctions.PatIndex("%" + Value.ToLower() +"%", x.Name.ToString().ToLower()) > 0) || (SqlFunctions.PatIndex("%" + Value.ToLower() +"%", x.Number.ToString().ToLower()) > 0) || (SqlFunctions.PatIndex("%" + Value.ToLower() +"%", x.Address.ToString().ToLower()) > 0)).Take(50).ToList();

¿Cómo puedo aumentar el rendimiento?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Las búsquedas con comodines como estas en los campos varchar / nvarchar van a iterar sobre cada carácter, más o menos, en busca de registros que cumplan con los criterios.

Una excelente (¡y rápida!) opción para este tipo de búsquedas es:

  1. Cree un catálogo de texto completo para almacenar índices de texto completo.
  2. Coloque un índice de texto completo en las columnas de cada tabla que necesite buscar.
  3. Utilice la palabra clave CONTAINS cuando busque en lugar de comodines.

Usted mencionó buscar fuentes creíbles, aquí hay una buena lectura.

over 4 years ago · Santiago Trujillo Relatório

0

Si usar LIKE y PATINDEX no le dio el rendimiento necesario, entonces probablemente debería escribir sp que usará FTS.

over 4 years ago · Santiago Trujillo Relatório

0

Para buscar con 'me gusta' en EF, puede usar Containers() :

 var Result = EDMXEntity.Entities.Where( x => x.Name.Contains(Value) || x => x.Number.ToString().Contains(Value) || x => x.Address.Contains(Value)).Take(50).ToList();

Pero con este tipo de búsqueda nunca lograrás un buen rendimiento. Debe cambiar la forma en que busca o almacena los datos en la base de datos. Por ejemplo, si está seguro de que el usuario estaba buscando el nombre, puede buscar solo en la columna 'nombre'.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda