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

#6 Ernest
01/10/2009 - 16:27 | Informe spam
Gracias a todos por sus comentarios y sugerencias.

Como dije estoy comenzando a trabajar en SQL SERVER. Es más ni siquiera lo
he instalado.

Pero por eso me interesa saber cuál es la mejor manera de hacer las cosas.

Por eso, que son los planes de ejecución ?

Afecta de manaera sensible construir las sentencias SELECT con condiciones
en el WHERE
y no el JOIN ?

Si afecta, de cuanto estamos hablando de centésimas de segundo o de segundos
que se va a tardar
más SQL SERVER en devolver los datos de los queries ?

Porque la aplicación que prentendo hacer es pequeña, por eso pienso utilizar
la versión Express
que soporta hasta 4 GB. Bueno, eso tengo entendido.

De nuevo, gracias a todos. saludos !!






"Carlos Sacristan" escribió en el mensaje
news:
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
#7 Carlos Sacristan
01/10/2009 - 16:39 | Informe spam
Creo que no estás haciendo bien las cosas. Antes de embarcarte a usar SQL
Server, lo suyo es conocer el producto, y por las preguntas que haces creo
que aún no tienes la suficiente experiencia para hacerlo. No digo que la
aplicación no vaya a funcionar, pero para sacarle todo el partido (o al
menos no encontrarte con problemas gordos cuando el producto esté en
producción), deberías leer algún libro o acceder a algún curso. En los
grupos de noticias sólo te podremos responder a preguntas concretas, no a
algo tan genérico como los ejemplos que estás poniendo.

Como libros te recomiendo los de la serie Inside SQL Server, aunque también
podrías empezar por alguno menos denso que te ayude a empezar.

"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


"Ernest" <ernest_rdQUITAR wrote in message
news:
Gracias a todos por sus comentarios y sugerencias.

Como dije estoy comenzando a trabajar en SQL SERVER. Es más ni siquiera lo
he instalado.

Pero por eso me interesa saber cuál es la mejor manera de hacer las cosas.

Por eso, que son los planes de ejecución ?

Afecta de manaera sensible construir las sentencias SELECT con condiciones
en el WHERE
y no el JOIN ?

Si afecta, de cuanto estamos hablando de centésimas de segundo o de
segundos que se va a tardar
más SQL SERVER en devolver los datos de los queries ?

Porque la aplicación que prentendo hacer es pequeña, por eso pienso
utilizar la versión Express
que soporta hasta 4 GB. Bueno, eso tengo entendido.

De nuevo, gracias a todos. saludos !!






"Carlos Sacristan" escribió en el mensaje
news:
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
#8 Jose TH
01/10/2009 - 16:49 | Informe spam
Lo mejor es leer la documentación oficial. Los libros en línea sobre todo
o algún libro sobre SQL Server.

"Ernest" <ernest_rdQUITAR escribió en el mensaje
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
#9 aa
01/10/2009 - 22:22 | Informe spam
Con un where no se puede afectar la forma del join (hash,merge,etc) menos si
son joins remotos y no siempre el sql pasa los where a join bien.
"Carlos Sacristan" wrote in message
news:
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
#10 Carlos Sacristan
02/10/2009 - 09:40 | Informe spam
Esa no era la pregunta original de Ernest. Efectivamente en el WHERE no
puedes incluir sugerencias de combinación, pero la pregunta era si la misma
combinación de tablas, escrita en el JOIN o en el WHERE daba lo mismo, y la
respuesta, corta, es que sí.

Otra cosa es que metamos otra serie de variables como que qué tipo de
combinación estamos tratando, si queremos usar algún tipo de sugerencia o
similar.

"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:
Con un where no se puede afectar la forma del join (hash,merge,etc) menos
si son joins remotos y no siempre el sql pasa los where a join bien.
"Carlos Sacristan" wrote in message
news:
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 AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida