Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Como optimizar vista remota
Message
From
04/07/2006 17:52:39
 
 
To
04/07/2006 13:40:34
General information
Forum:
Visual FoxPro
Category:
Databases,Tables, Views, Indexing and SQL syntax
Miscellaneous
Thread ID:
01133644
Message ID:
01133685
Views:
11
Hola, César.

>me dicen que para trabajar con muchos registros en vistas remotas sql server 2000 el
>select clientes
>index on idcliente tag idcliente &&&&no es muy rapido.
>
>mi pregunta = como hacer la busqueda en la vista con select? ,sin usar index

Ese mecanismo de trabajo no es eficiente en ningún motor. Tampoco en VFP. Si cada vez que vas a usar una tabla la indexas, en primer lugar necesitas tener acceso exclusivo, por lo que tu aplicación se hace monousuario, algo poco aceptable hoy día.

Los índices son algo que creas una vez y se mantienen actualizados solos a medida que actualizas los datos de la tabla.

Si utilizas sentencias SELECT de SQL, el optimizador hace eficiente la consulta basado en los índices disponibles. Así, si tienes una tabla Cliente con 10,000 clientes y los campos codigo y nombre, sin índices, al hacer:
select codigo, nombre from Clientes where codigo = 9999
la consulta recorrerá tantos registros como necesite para localizar el indicado (en este caso probablemente casi toda la tabla).

La misma sentencia, si tienes un índice por codigo, localizará el registro en un solo paso (en realidad habrá unas pocas lecturas sobre el índice, pero a efectos prácticos puedes considera que el resultado es inmediato).

Si utilizas vistas (locales o remotas) en este mismo escenario, lo que utilizas es una vista parametrizada. Básicamente bajo la vista existe una sentencia como:
select codigo, nombre from Clientes where codigo = ?tnCodigo
Para utilizar esta vista haces:
tcCodigo = 9999
use VistaClientes

ó

select VistaClientes
tcCodigo = 9999
requery()
Existiendo el índice en ambos casos el acceso será eficiente. En SQL Server puedes crear índices utilizando Enterprise Manager, o mediante sentencias SQL como:
CREATE INDEX Codigo ON Clientes (codigo)
Espero que te haya aclarado algo el panorama.

Saludos,
Previous
Reply
Map
View

Click here to load this message in the networking platform