none
Consulta con el operador LIKE RRS feed

  • Pregunta

  • Buenos días a todos,

    Tengo una consulta que hacer con el operador like para buscar personas ,el problema es que me tarde un rato.

    En la tabla de la base de datos tengo puesto el campo por el que quiero buscar que es apellido, como indice.

    NO se que hacer mas.

    Dejo el código por si me pudierais ayudar.(El codigo esta en c#)

    1000 gracias como siempre.

                             

     string sql_s = "SELECT td_paciente.pa_hClinica, td_paciente.pa_nombre, td_paciente.pa_apellido1, td_paciente.pa_apellido2, td_agenda_envision.id_paciente, td_agenda_envision.fecha, td_agenda_envision.hora_inicio,td_agenda_envision.motivo_eliminacion FROM td_paciente INNER JOIN td_agenda_envision ON td_paciente.pa_idPaciente = td_agenda_envision.id_paciente where td_paciente.pa_apellido1 like '" + this.tb_buscar.Text + "%'";

    frm_visor_imagenes SQLServerOftalmogestion = new frm_visor_imagenes();
    dt_s = SQLServerOftalmogestion.SelectSQL(sql_s);
    this.dgv_td_paciente.DataSource = dt_s;

    domingo, 9 de septiembre de 2018 4:52

Respuestas

  • Vete al SSMS, pega la sentencia, y pídele el plan de ejecución. Si te dice que hace un "Index Seek", entonces está usando el índice correctamente, y no debería haber problemas por esa parte. Es ese caso, examina el resto del plan de ejecución y mira los porcentajes de coste de cada etapa. Viendo en cuál de ellas pierda el mayor porcentaje, se puede inferir dónde habría que intervenir, o qué índice falta (posiblemente alguno para satisfacer el ON).

    Pero, salvo que tengas cientos de miles de registros, dudo que el problema esté en la búsqueda del registro. Sospecho que puede ocurrir que la imagen que traes sea muy grande y que el tiempo se le pierda en transferir todos los bytes de la imagen (o en visualizarlos en tu visor de imágenes). Si el problema fuera este, no se resolvería por mucho que cambies la forma de la sentencia o los índices de la misma.

    • Marcado como respuesta Juan Martinez F domingo, 9 de septiembre de 2018 6:46
    domingo, 9 de septiembre de 2018 6:45

Todas las respuestas

  • Vete al SSMS, pega la sentencia, y pídele el plan de ejecución. Si te dice que hace un "Index Seek", entonces está usando el índice correctamente, y no debería haber problemas por esa parte. Es ese caso, examina el resto del plan de ejecución y mira los porcentajes de coste de cada etapa. Viendo en cuál de ellas pierda el mayor porcentaje, se puede inferir dónde habría que intervenir, o qué índice falta (posiblemente alguno para satisfacer el ON).

    Pero, salvo que tengas cientos de miles de registros, dudo que el problema esté en la búsqueda del registro. Sospecho que puede ocurrir que la imagen que traes sea muy grande y que el tiempo se le pierda en transferir todos los bytes de la imagen (o en visualizarlos en tu visor de imágenes). Si el problema fuera este, no se resolvería por mucho que cambies la forma de la sentencia o los índices de la misma.

    • Marcado como respuesta Juan Martinez F domingo, 9 de septiembre de 2018 6:46
    domingo, 9 de septiembre de 2018 6:45
  • Muchas gracias amigo,ya lo solucione
    domingo, 9 de septiembre de 2018 6:46