Cual es la mejor manera de CONSTRUIR sentencias SELECT ?

30/09/2009 - 20:21 por Ernest | Informe spam
Hola amigos que tal como están ?

Tengo una consulta : Estoy comenzando en SQL SERVER y necesito saber cuál es
la mejor manera de construir las
sentencias SELECT.

Hasta el momento he trabajado mis consultas de la siguiente manera. (Usando
otras Bases de Datos) Ejemplo :

SELECT a.num_factura, a.fecha, a.cod_cliente, b.nom_cliente
FROM vta a, cliente b
WHERE a.cod_cliente = b.cod_cliente
AND &&&&& Todas las condiciones que quiero. etc.

Pero parece que en SQL SERVER debería de ser de éste modo :

SELECT a.num_factura, a.fecha, a.cod_cliente, b.nom_cliente
FROM vta a
INNER JOIN cliente b
ON a.cod_cliente = b.cod_cliente ;
WHERE &&&&& Todas las condiciones que quiero. etc.

La verdad, es que leí por allí que hacerlo de la primera forma
afecta el rendimiento.

Pero yo he trabajado en VFP 9.0 datos considerables y al contrario mis
queries han resultado más rápidos y eficientes
que los escritos usando el INNER JOIN que traía la aplicación por defaul.t
(Es una aplicación que se compró a terceros en la empresa donde laboro
construida en VFP 9.0).

Por eso, ahora que tengo que comenzar a trabajar en SQL SERVER me gustaría
saber, de acuerdo a su experiencia,
si en verdad afecta de manera sensible el rendimiento. Porque la verdad
considero mucho más fácil hacerlo
de la primera manera. La segunda me parece es Transact SQL.

No omito, comentarles que la aplicación que pienso hacer es pequeña por lo
que pienso utilizar la Versión Express
que soporta hasta 4 GB.

Les agradezco mucho su gran ayuda.

Preguntas similare

Leer las respuestas

#1 Ruben Garrigos
30/09/2009 - 22:04 | Informe spam
Hola Ernest,

Puedes utilizar ambas estructuras. Yo personalmente prefiero la segunda pues
quedan más claras las condiciones del cruce de las tablas y además es más
complicado que se olvide alguna condición y se convierta en un producto cartesiano
el cruce.

Un saludo,

Rubén Garrigós
Solid Quality Mentors

Blog: http://blogs.solidq.com/es/elrincondeldba

Hola amigos que tal como están ?

Tengo una consulta : Estoy comenzando en SQL SERVER y necesito saber
cuál es
la mejor manera de construir las
sentencias SELECT.
Hasta el momento he trabajado mis consultas de la siguiente manera.
(Usando otras Bases de Datos) Ejemplo :

SELECT a.num_factura, a.fecha, a.cod_cliente, b.nom_cliente
FROM vta a, cliente b
WHERE a.cod_cliente = b.cod_cliente
AND &&&&& Todas las condiciones que quiero. etc.
Pero parece que en SQL SERVER debería de ser de éste modo :

SELECT a.num_factura, a.fecha, a.cod_cliente, b.nom_cliente
FROM vta a
INNER JOIN cliente b
ON a.cod_cliente = b.cod_cliente ;
WHERE &&&&& Todas las condiciones que quiero. etc.
La verdad, es que leí por allí que hacerlo de la primera forma afecta
el rendimiento.

Pero yo he trabajado en VFP 9.0 datos considerables y al contrario mis
queries han resultado más rápidos y eficientes
que los escritos usando el INNER JOIN que traía la aplicación por
defaul.t
(Es una aplicación que se compró a terceros en la empresa donde laboro
construida en VFP 9.0).
Por eso, ahora que tengo que comenzar a trabajar en SQL SERVER me
gustaría
saber, de acuerdo a su experiencia,
si en verdad afecta de manera sensible el rendimiento. Porque la
verdad
considero mucho más fácil hacerlo
de la primera manera. La segunda me parece es Transact SQL.
No omito, comentarles que la aplicación que pienso hacer es pequeña
por lo
que pienso utilizar la Versión Express
que soporta hasta 4 GB.
Les agradezco mucho su gran ayuda.

Respuesta Responder a este mensaje
#2 Ernest
30/09/2009 - 22:13 | Informe spam
Muchas Gracias Rubén por contestarme. Eres muy amable.

LLevas bastante tiempo trabajando con SQL SERVER ?

Porque la verdad, tengo muchos deseos de aprender de todos ustedes.

Muchas gracias de nuevo, amigo.

Saludos !!!





"Ruben Garrigos" escribió en el mensaje
news:
Hola Ernest,

Puedes utilizar ambas estructuras. Yo personalmente prefiero la segunda
pues quedan más claras las condiciones del cruce de las tablas y además es
más complicado que se olvide alguna condición y se convierta en un
producto cartesiano el cruce.

Un saludo,

Rubén Garrigós
Solid Quality Mentors

Blog: http://blogs.solidq.com/es/elrincondeldba

Hola amigos que tal como están ?

Tengo una consulta : Estoy comenzando en SQL SERVER y necesito saber
cuál es
la mejor manera de construir las
sentencias SELECT.
Hasta el momento he trabajado mis consultas de la siguiente manera.
(Usando otras Bases de Datos) Ejemplo :

SELECT a.num_factura, a.fecha, a.cod_cliente, b.nom_cliente
FROM vta a, cliente b
WHERE a.cod_cliente = b.cod_cliente
AND &&&&& Todas las condiciones que quiero. etc.
Pero parece que en SQL SERVER debería de ser de éste modo :

SELECT a.num_factura, a.fecha, a.cod_cliente, b.nom_cliente
FROM vta a
INNER JOIN cliente b
ON a.cod_cliente = b.cod_cliente ;
WHERE &&&&& Todas las condiciones que quiero. etc.
La verdad, es que leí por allí que hacerlo de la primera forma afecta
el rendimiento.

Pero yo he trabajado en VFP 9.0 datos considerables y al contrario mis
queries han resultado más rápidos y eficientes
que los escritos usando el INNER JOIN que traía la aplicación por
defaul.t
(Es una aplicación que se compró a terceros en la empresa donde laboro
construida en VFP 9.0).
Por eso, ahora que tengo que comenzar a trabajar en SQL SERVER me
gustaría
saber, de acuerdo a su experiencia,
si en verdad afecta de manera sensible el rendimiento. Porque la
verdad
considero mucho más fácil hacerlo
de la primera manera. La segunda me parece es Transact SQL.
No omito, comentarles que la aplicación que pienso hacer es pequeña
por lo
que pienso utilizar la Versión Express
que soporta hasta 4 GB.
Les agradezco mucho su gran ayuda.






Respuesta Responder a este mensaje
#3 aa
01/10/2009 - 00:42 | Informe spam
A simple vista parece que no pero usar where en vez de inner puede afectar
los planes de ejecucion.
"Ernest" <ernest_rdQUITAR wrote in message
news:
Hola amigos que tal como están ?

Tengo una consulta : Estoy comenzando en SQL SERVER y necesito saber cuál
es la mejor manera de construir las
sentencias SELECT.

Hasta el momento he trabajado mis consultas de la siguiente manera.
(Usando otras Bases de Datos) Ejemplo :

SELECT a.num_factura, a.fecha, a.cod_cliente, b.nom_cliente
FROM vta a, cliente b
WHERE a.cod_cliente = b.cod_cliente
AND &&&&& Todas las condiciones que quiero. etc.

Pero parece que en SQL SERVER debería de ser de éste modo :

SELECT a.num_factura, a.fecha, a.cod_cliente, b.nom_cliente
FROM vta a
INNER JOIN cliente b
ON a.cod_cliente = b.cod_cliente ;
WHERE &&&&& Todas las condiciones que quiero. etc.

La verdad, es que leí por allí que hacerlo de la primera forma
afecta el rendimiento.

Pero yo he trabajado en VFP 9.0 datos considerables y al contrario mis
queries han resultado más rápidos y eficientes
que los escritos usando el INNER JOIN que traía la aplicación por defaul.t
(Es una aplicación que se compró a terceros en la empresa donde laboro
construida en VFP 9.0).

Por eso, ahora que tengo que comenzar a trabajar en SQL SERVER me gustaría
saber, de acuerdo a su experiencia,
si en verdad afecta de manera sensible el rendimiento. Porque la verdad
considero mucho más fácil hacerlo
de la primera manera. La segunda me parece es Transact SQL.

No omito, comentarles que la aplicación que pienso hacer es pequeña por lo
que pienso utilizar la Versión Express
que soporta hasta 4 GB.

Les agradezco mucho su gran ayuda.


Respuesta Responder a este mensaje
#4 Ernest
01/10/2009 - 01:39 | Informe spam
Hola amigo "aa" que tal ?

A que te refieres con que sí afecta los planes de ejecución ?

Estoy seguroque todos deseamos conocer y aprender sobre las experiencias que
tú has tenido con éstas
dos maneras de construir queries.

Saludos "!




"aa" escribió en el mensaje
news:
A simple vista parece que no pero usar where en vez de inner puede afectar
los planes de ejecucion.
"Ernest" <ernest_rdQUITAR wrote in message
news:
Hola amigos que tal como están ?

Tengo una consulta : Estoy comenzando en SQL SERVER y necesito saber cuál
es la mejor manera de construir las
sentencias SELECT.

Hasta el momento he trabajado mis consultas de la siguiente manera.
(Usando otras Bases de Datos) Ejemplo :

SELECT a.num_factura, a.fecha, a.cod_cliente, b.nom_cliente
FROM vta a, cliente b
WHERE a.cod_cliente = b.cod_cliente
AND &&&&& Todas las condiciones que quiero. etc.

Pero parece que en SQL SERVER debería de ser de éste modo :

SELECT a.num_factura, a.fecha, a.cod_cliente, b.nom_cliente
FROM vta a
INNER JOIN cliente b
ON a.cod_cliente = b.cod_cliente ;
WHERE &&&&& Todas las condiciones que quiero. etc.

La verdad, es que leí por allí que hacerlo de la primera forma
afecta el rendimiento.

Pero yo he trabajado en VFP 9.0 datos considerables y al contrario mis
queries han resultado más rápidos y eficientes
que los escritos usando el INNER JOIN que traía la aplicación por
defaul.t
(Es una aplicación que se compró a terceros en la empresa donde laboro
construida en VFP 9.0).

Por eso, ahora que tengo que comenzar a trabajar en SQL SERVER me
gustaría saber, de acuerdo a su experiencia,
si en verdad afecta de manera sensible el rendimiento. Porque la verdad
considero mucho más fácil hacerlo
de la primera manera. La segunda me parece es Transact SQL.

No omito, comentarles que la aplicación que pienso hacer es pequeña por
lo que pienso utilizar la Versión Express
que soporta hasta 4 GB.

Les agradezco mucho su gran ayuda.







Respuesta Responder a este mensaje
#5 Carlos Sacristan
01/10/2009 - 09:19 | Informe spam
No estoy de acuerdo, pero es fácil de comprobar echando un vistazo al plan
de ejecución de una instrucción construida con JOIN y la otra con las
condiciones de combinación en el WHERE.

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático


"aa" wrote in message
news:
A simple vista parece que no pero usar where en vez de inner puede afectar
los planes de ejecucion.
"Ernest" <ernest_rdQUITAR wrote in message
news:
Hola amigos que tal como están ?

Tengo una consulta : Estoy comenzando en SQL SERVER y necesito saber cuál
es la mejor manera de construir las
sentencias SELECT.

Hasta el momento he trabajado mis consultas de la siguiente manera.
(Usando otras Bases de Datos) Ejemplo :

SELECT a.num_factura, a.fecha, a.cod_cliente, b.nom_cliente
FROM vta a, cliente b
WHERE a.cod_cliente = b.cod_cliente
AND &&&&& Todas las condiciones que quiero. etc.

Pero parece que en SQL SERVER debería de ser de éste modo :

SELECT a.num_factura, a.fecha, a.cod_cliente, b.nom_cliente
FROM vta a
INNER JOIN cliente b
ON a.cod_cliente = b.cod_cliente ;
WHERE &&&&& Todas las condiciones que quiero. etc.

La verdad, es que leí por allí que hacerlo de la primera forma
afecta el rendimiento.

Pero yo he trabajado en VFP 9.0 datos considerables y al contrario mis
queries han resultado más rápidos y eficientes
que los escritos usando el INNER JOIN que traía la aplicación por
defaul.t
(Es una aplicación que se compró a terceros en la empresa donde laboro
construida en VFP 9.0).

Por eso, ahora que tengo que comenzar a trabajar en SQL SERVER me
gustaría saber, de acuerdo a su experiencia,
si en verdad afecta de manera sensible el rendimiento. Porque la verdad
considero mucho más fácil hacerlo
de la primera manera. La segunda me parece es Transact SQL.

No omito, comentarles que la aplicación que pienso hacer es pequeña por
lo que pienso utilizar la Versión Express
que soporta hasta 4 GB.

Les agradezco mucho su gran ayuda.






Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida