FoxPro/Visual FoxPro - CONSULTAS SOBRE SQL

 
Vista:

CONSULTAS SOBRE SQL

Publicado por ariel villagra (1 intervención) el 27/03/2011 05:23:10
Hola amigos del foro!
Estoy haciendo mis primeras armas en el uso de SQL, antes usaba el lenguaje nativo de Fox.
Al respecto me han surgido algunas dudas que me gustaria me aclaren:
La primera es referida a los indices, en el caso de SQL, ¿hace falta usarlos , o con SQL no hacen falta?
Si debo usarlos,¿ como lo hago, o SQL los utiliza automaticamente, o con ORDER by?

Otra consulta para hacer un UPDATE a una tabla la sintaxis es mas o menos asi

UPDATE mitabla SET campo1=value1, campo2=value2.... WHERE...

El problema es que tengo que actualizar una tabla que tiene 29 campos..
¿Hay alguna expresion para evita poner cada uno de los campos y su valor?

En mi caso usos variables de memoria con SCATTER MEMVAR

Desde ya muchas gracias por vuestra inestimable ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Funcionamiento de los indices en una base de datos

Publicado por xve (83 intervenciones) el 27/03/2011 13:20:07
Hola Ariel, te voy a comentar sobre tu primera pregunta de los indices...

Sin ninguna duda, son necesarios y muy útiles, ya que aumentara la velocidad de tus consultas.
Si la tabla tiene pocos campos, no es muy significativo su uso, pero si utilizas miles o millones de registros, yo diria que es casi necesaria la utilización de los indices.

Explicado a mi manera, que creo es correcta (sino, que alguien me corrija)...
Cada vez que generas un índice, se genera una copia de la tabla ordenada por el índice que has creado, de tal manera, que si por ejemplo, indexas por el campo idProducto, todas las búsquedas que hagas utilizando en la clausula where "idProducto=...." utilizara esta copia de tabla indexada, por lo que no tendrá que recorrer toda la base de datos para encontrar la coincidencia.

Se pueden realizar índices por varios campos simultáneamente si fuera necesario.

Hay que tener en cuenta, que si se realizan muchos índices, y la tabla tiene muchos inserts o updates, cada insert o update se tendrá que hacer en la tabla y lo ara automáticamente en todos los índices...

Espero haberte aclarado un poco
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

CONSULTAS SOBRE SQL

Publicado por Juan Manuel Cruz (512 intervenciones) el 29/03/2011 11:02:10
¿Los índices? Sí, claro que debes usarlos, por un tema de performance.

Una buena idea, para empezar, es si tienes una consulta frecuente, analizarla en el 'Asistente para Optimizacion de Motor de datos' (léete la documentación) que te podrá recomendar los mejores índices u optimizaciones en el contexto.

Si la gente usara el CURSORADAPTER como capa intermedia, un simple SCATTER MEMVAR podría hacerse incluso tratando con SQL ya que sería VFP el que negociase las actualizaciones. Ya que no es así, no queda de otra, hay que tragarse toda la sintaxis SQL convencional (que por otro lado mucha gente insiste en recomendarlo, con miras a futuros upgrades)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Funcionamiento de los indices en una base de datos

Publicado por Saul (728 intervenciones) el 28/03/2011 23:18:08
Hola Ariel, la idea de USAR SQL server es presisamente evitar tus archivos indices (CDX) en tus tablas es decir yo uso mi sistema con un cursor que viene de una tabla que tiene muchos registros
y solo hago referencia a un registro..

Ejemplo:

Facturas.. (Tabla FacCab)
Detalle Facturas.. (FacDeta)

"SELECT * FROM FacCab WHERE nfAC = '001' "."CurFacCAb)

"SELECT * FROM FacDeta WHERE nfAC = '001' "."CurFacDeta)

Con esto yo tengo mi cursor con unicamente mi factura que estoy usando actualmente
y al INSERTAR, Y MODIFICAR obiamente, solo se usa una linea.

ahora si me hablas de SQL si tienes que hacer INDECEs Mi consejo es que si.. es necesario y obligatorio, porque cuando hagas una consulta en SQL (en el motor) y le pones un indice a tu consulta tu performat sube inumerablemente..


Ahora para tu otra consulta

Difinitivamente tienes que usar todos los campos..

Suerte..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar