Rendimiento índices


([N1] robertocofiex) #1

Hola amigos, llevo años programando en V6 y v7 y siempre me ha surgido la siguiente duda, ya enfocada
a v7:

¿Que diferencia de rendimiento hay entre hacer un índice junto de 4 campos, a hacerlos por separado?

Me explico tener un índice único de Empresa-Cliente-Fecha o tener un índice por cada campo.

Si los tengo juntos me da mejor búsqueda para usar Cargar lista, en todo caso con las búsquedas no hay límite

Me gustaría un consejo para realizar búsquedas de 10 campos de criterio, si lo hago por índice de cada campo
o si agrupo.

.-Aprovecho para otra cosita, en las busquedas normalmente el primer componente de campo pongo el ID todo
el fichero para añadir índices etc. ¿Esto carga todos los registros y los va cargando o lanza la búsqueda
y operación cuando está toda compuesta??

Gracias.

Saludos.Roberto.


([N2] AyudaVelneo) #2

Hola Roberto:

Siempre es mejor usar un índice con varios componentes, que varios índices de un solo componente. Aunque sólo sea por el espacio en disco y el tiempo que te llevará reindexar.

En cuanto a cómo se lanza la búsqueda con varios componentes, se lanza uno a uno.

Imagina que tienes un índice cuyo primer componente es cliente y el segundo fecha (cruzando los dos índices)

Si lanzas la búsqueda en primer plano:

  • El vClient manda al servidor el cliente y el servidor devuelve los registros que cumplen la condición.
  • El vClient manda al servidor la fecha y el servidor devuelve los registros que cumplen con la condición
  • Es el vClient el que se encarga de cruzar las dos listas que nos ha devuelto el vServer.

Si lanzas la búsqueda en tercer plano:

  • El vServer se encarga de realizar ambas búsquedas y cruzarlas, devolviendo la lista al vClient
  • El vClient sólo se encarga de mostrar la lista ya cruzada

Por eso observamos la diferencia de rendimiento entre lanzar las búsquedas en primer o en tercer plano.ç

Un saludo