FoxPro/Visual FoxPro - Consulta de Concepto Estoy Preocupado

 
Vista:

Consulta de Concepto Estoy Preocupado

Publicado por LUIS A CISTERNAS (15 intervenciones) el 20/11/2004 23:23:33
hola amigos:
Tengo una duda ,estoy trabajando en un proyecto con VFP 6.0 y con las tablas DBF ,las tablas estan creadas con el create cursor y existen indices con el index on....para las busquedas,pero en ningun caso he generado claves primarias ,la manera como recorren las tablas es hacer un select <tabla> y luego para en el registro con el seek , yo empeze a ocupar busquedas con sql osea con un select * from ......,llene una tabla con 25000 registros elimine el registro 24999,con un seek el cual se me demoro 57 seg luego elimine el mismo registro con sql ,se demoro 58 seg ,por lo tanto he empezado a ocupar sql ,la pregunta es ¿como se comportan el motor de base de datos que admisnistra las tablas dbf si no he generado claves primarias para los cruces con inner join ?¿se pueden definir claves primarias a travez de codigo y como lo hago ? por ejemplo:
create cursor tabla
...
(rut c(9),;
nombre c(50))
estoy preocupado ya que hago cruces en consulta con 5 tablas con inner join y me preocupan los tiempos de respuestas

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

RE:Consulta de Concepto Estoy Preocupado

Publicado por Roman Suazo (2723 intervenciones) el 21/11/2004 00:19:23
Para crear indices primerios con codigo usarias:

INDEX ON eExpresión TAG NombreEtiqueta CANDIDATE ADDITIVE

La verdad que hay algo raro en los timepos estan exagerademente lentos en tu caso, puede ser que los indices te ayuden o tal vez tienes muy poca memoria. 25,000 registro es bien poco para foxpro o sql server

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

RE:es poderoso me la bse de vfp

Publicado por luis (15 intervenciones) el 23/11/2004 02:32:28
lo que pasa es que no quiero usar mas los seek ni indices queiro saguir usando consultas sql y no se como crear las claves primarias en el codigo,sera igual que en sql ,como se comporta el motor de base de datos q trae vfp es poderoso
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

RE:es poderoso me la bse de vfp

Publicado por Roman Suazo (2723 intervenciones) el 23/11/2004 03:45:15
No te entiendo bien, tanto en VFP y SQL server los indices son nesarios para hacer las consultas sin ellos serian muchos mas lentos los tiempos de respuesta, es decir , los indices son BUENOS. Lo que seria malo es tener indices de campos que no se usen mucho por ejemplo.

Cuando hablas de claves primarias basicamente es crear un indice principal para un campo, a traves de esta clave se establecera una relacion con una tabla secundaria...con el ALTER TABLE podrias crear la clave primaria. Esta solo se crea una vez...
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

definir indices

Publicado por luis (15 intervenciones) el 23/11/2004 17:43:03
mi consulta va referida a si el motor de base de datos que trae incorporado vfp es poderoso ¿como creo las claves primarias en vfp,intente hacerlo igual que en sql server y no me resulto?

(rut c(9),;
nombre c(50),;
cod_ciudad c(3),primary key(rut))

se pueden ocupar indices que son creados por codigo con el index on....
ocupando sentencias sql ,por ejemplo en el caso de que quesiera hacer una consulta para el ejemplo de la tabla con un select * from .....where rut=X and cod_ciudad=X2
igual tendria que crear un indice asi
index on rut+cod_ciudad tag i_indice
osea los campos que yo compare en el where son los indices a crear y si fuera asi que pasa con los cruces cuando ocupe inner join ,tambien tendre que crear indices o bastaran que defina las claves primarias .
te coloque el ejemplo de index on......´por que esa es la forma en que trabajan en esta empresa ,hacen un select de la tabla
selec xxxx
seek variablerut+variableciudad
y yo cambie esas busquedas por sentencias sql ya que aqui puedo hacer inner join y ahorro codigo

chau y ojala me puedas ayudar

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

RE:definir indices

Publicado por Roman Suazo (2723 intervenciones) el 23/11/2004 18:26:17
El motor de la base de VFP es bueno, no es mas poderosos obviamente que el SQL server u ORACLE paro si es mas rapido que ACCESS y FMP y cosas por el estilo, es decir, el VFP es exclente cuando la base que vas a consultar esta en la maquina del usuario en cuyo caso podria decirse que podria competir con SQL Server...

Los primary KEY asi como cualquier otro tipo de indice se pueden crear ya se en codigo o a traves de pantallas especiales. La mayoria de las veces se hace a traves de las pantallas o interfaces ya que asi es mas seguro... Te recomiendo que cheques bien la ayuda del comando CREATE TABLE o ALTER TABLE ahi te mostraran bastant e claro como se definen los PK PROGRAMATICAMENTE

*el ejemplo de la tabla con un select * from .....where rut=X and cod_ciudad=X2
*igual tendria que crear un indice asi
*index on rut+cod_ciudad tag i_indice

No, tendrias que crear un indice para cada campo, ya que cada uno lo buscas por separado y no la combinacion...

El index on solo se debe usar una vez, a menos de que vayas hacer varias consultas sobre un cursor...en Este caso supongo que las consultas las haces sobre tablas en cuyo caso los indices ya quedan grabados...

EL SEEK es diferente ya que esta depende de un indice solo te sirve para buscar en base a un campo por eso es que hacen la sumatoria de las variables (en la expresion del indice va la sumatoria de los campos). EL SEEK no es para consultas es para moverte a un determinado registro en la tabla..

Lo mejor es que busques un manual de Fox ya que creo que estas confundiendo mucho el SQL server con el Fox y en realidad son muy diferentes...
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