Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

111
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!