Pregunta simple...

03/11/2004 - 17:40 por DiGiTaL | Informe spam
Que tal a todos...

Tengo una duda...digamos que tengo una tabla llamada "Movimientos" donde
registro operaciones de muchos clientes... y otra tabla llamada
"Clientes"...En la tabla "Movimientos" tengo mas de 1 millon de registros y
en la tabla "Clientes" tengo menos de 30 registros...

la pregunta es la siguiente... al hacer un inner join entre estas dos
tablas, por el campo clienteID (que asuminos existe en ambas tablas)... da
lo mismo en cuestiones de performance hacer un "WHERE" por clienteID desde
cualquiera de las dos tablas??? es decir es lo mismo hacer el "where" desde
Clientes.ClienteID=xxx que desde Movimientos.ClienteID=xxx???

gracias...

Preguntas similare

Leer las respuestas

#1 qwalgrande
03/11/2004 - 18:13 | Informe spam
Hola.

Yo que tú lo comprobaría, mirando las lecturas lógicas. En teoría, y si el
campo en la tabla grande está indexado, debería ser lo mismo porque el motor
usaría dicho índice, aunque en cualquier caso, ponerlo en la tabla grande es
lo que suele dar mejor resultado. Me he encontrado con situaciones en los que
lo mejor era poner el filtro no en una ni en otra tabla, si no en las dos. De
todos modos, lo dicho, Ctrl + K, set statistics io on, y a comparar.

qwalgrande

"DiGiTaL" wrote:

Que tal a todos...

Tengo una duda...digamos que tengo una tabla llamada "Movimientos" donde
registro operaciones de muchos clientes... y otra tabla llamada
"Clientes"...En la tabla "Movimientos" tengo mas de 1 millon de registros y
en la tabla "Clientes" tengo menos de 30 registros...

la pregunta es la siguiente... al hacer un inner join entre estas dos
tablas, por el campo clienteID (que asuminos existe en ambas tablas)... da
lo mismo en cuestiones de performance hacer un "WHERE" por clienteID desde
cualquiera de las dos tablas??? es decir es lo mismo hacer el "where" desde
Clientes.ClienteID=xxx que desde Movimientos.ClienteID=xxx???

gracias...



Respuesta Responder a este mensaje
#2 Paulino Padial
03/11/2004 - 21:09 | Informe spam
adicionalmente a lo que ha dicho qwalgrande puedes poner tb esto antes de
iniciar la consulta la segunda vez y consecutivas, y ejecutarlo,(puedes
mirar su def en los bol)

dbcc dropcleanbuffers
dbcc freeproccache

porque si no al lanzar la consulta, la segunda vez solo hace las lecturas de
la memoria.
creo.. Tampoco los lances en servidores de produccion, siempre en los de
pre-produccion.

Saludos Cordiales

Paulino Padial Lopez
Microsoft MCSD
Database Administrator
"qwalgrande" <qwalgrande*nospam*@yahoo.es> escribió en el mensaje
news:
Hola.

Yo que tú lo comprobaría, mirando las lecturas lógicas. En teoría, y si el
campo en la tabla grande está indexado, debería ser lo mismo porque el


motor
usaría dicho índice, aunque en cualquier caso, ponerlo en la tabla grande


es
lo que suele dar mejor resultado. Me he encontrado con situaciones en los


que
lo mejor era poner el filtro no en una ni en otra tabla, si no en las dos.


De
todos modos, lo dicho, Ctrl + K, set statistics io on, y a comparar.

qwalgrande

"DiGiTaL" wrote:

> Que tal a todos...
>
> Tengo una duda...digamos que tengo una tabla llamada "Movimientos" donde
> registro operaciones de muchos clientes... y otra tabla llamada
> "Clientes"...En la tabla "Movimientos" tengo mas de 1 millon de


registros y
> en la tabla "Clientes" tengo menos de 30 registros...
>
> la pregunta es la siguiente... al hacer un inner join entre estas dos
> tablas, por el campo clienteID (que asuminos existe en ambas tablas)...


da
> lo mismo en cuestiones de performance hacer un "WHERE" por clienteID


desde
> cualquiera de las dos tablas??? es decir es lo mismo hacer el "where"


desde
> Clientes.ClienteID=xxx que desde Movimientos.ClienteID=xxx???
>
> gracias...
>
>
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida