Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-04-2018
Avatar de lbidi
lbidi lbidi is offline
Miembro
 
Registrado: Oct 2003
Ubicación: Montevideo- URUGUAY
Posts: 375
Poder: 15
lbidi Va por buen camino
Manejo de Indices en Mysql temporal

Estimados..

Tengo el siguiente codigo para crear una tabla temporal en un server MYSQL.
Código Delphi [-]
FDQuery.SQL.Clear;
FDQuery.SQL.Add( 'CREATE TEMPORARY TABLE temp ( ');
FDQuery.SQL.Add( 'Cliente Double,');
FDQuery.SQL.Add( 'Nombre Char(30),');
FDQuery.SQL.Add( 'Direccion Char(30),');
FDQuery.SQL.Add( 'Total Double,');
FDQuery.SQL.Add( 'Telefono Char(10) );');
FDQuery.SQL.Add( 'CREATE INDEX xCliente   on temp (Cliente);');
FDQuery.SQL.Add( 'CREATE INDEX xNombre    on temp (Nombre);');
FDQuery.SQL.Add( 'CREATE INDEX xDireccion on temp (Direccion);');
FDQuery.SQL.Add( 'CREATE INDEX xTotal     on temp (Total DESC);');
FDQuery.ExecSQL;

cTablaMy.IndexName := 'xTotal';  <<---- aqui me da error

cual es la sintaxis correcta para tomar por defecto el indice que le indico.
estan bien creados los indices de esta manera ??

Gracias.
Responder Con Cita
  #2  
Antiguo 17-04-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: Sep 2004
Ubicación: En algún lugar.
Posts: 28.398
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Y qué es cTablaMy?
Responder Con Cita
  #3  
Antiguo 17-04-2018
Avatar de lbidi
lbidi lbidi is offline
Miembro
 
Registrado: Oct 2003
Ubicación: Montevideo- URUGUAY
Posts: 375
Poder: 15
lbidi Va por buen camino
Perdon Casimiro.. es una FDTable..
Responder Con Cita
  #4  
Antiguo 18-04-2018
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: Jul 2004
Ubicación: Barcelona - España
Posts: 15.657
Poder: 10
Neftali [Germán.Estévez] Tiene un aura espectacularNeftali [Germán.Estévez] Tiene un aura espectacular
Normalmente cuando se trabaja con SGBD's (Sistemas de Gestión de Base de Datos) no se aplican índices a nivel de componentes, porque se supone que ese trabajado de planificación y optimización queda a cargo del servidor de Bases de Datos. A diferencia de cuando trabajamos con Bases de datos locales(DBase, Accesss, Paradox,...) que ese trabajo quedaba para el programador.

Muchos componentes actuales siguen manteniendo esas propiedades por compatibilidad o simplemente porque entre los componenetes disponibles (aunque trabajemos con SGBD's) sigue existiendo uno para trabajar en memoria (TFDMemTable en el caso de FireDAC).

En ese caso sí tiene sentido trabajar con índices porque estamos convirtiendo el trabajo con un servidor de Base de Datos en un trabajo similar a una Base de Datos de escritorio, ya que TFDMemTable lo que hace es traer todos los datos de la tabla a memoria.
Para ellos debes definir los índices en la propiedad Indexes y luego activar el que quieras utilizando la propiedad IndexName.

El el caso de TFDTable tal y como te he dicho puedes:

1) Definir los índices en Indexes y liuego activarlo con IndexName
2) Definiendo directamente la propiedad IndexFieldName que es excluyente con la anterior.

En ambos casos lo que hece el SGBD es "convertir" eso en un ORDER BY en la Base de Datos.

La otra opción en estos casos, es utilizar un TFDQuery y definir la sentencia SQL necesaria con la parte ORDER BY que necesitemos.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 18-04-2018
Avatar de lbidi
lbidi lbidi is offline
Miembro
 
Registrado: Oct 2003
Ubicación: Montevideo- URUGUAY
Posts: 375
Poder: 15
lbidi Va por buen camino
Gracias Neftali por tu amplia y concisa respuesta.

Tratare de hacerlo con FDMemTable y luego cuento como me fue.

Saludos
Responder Con Cita
  #6  
Antiguo 18-04-2018
Avatar de lbidi
lbidi lbidi is offline
Miembro
 
Registrado: Oct 2003
Ubicación: Montevideo- URUGUAY
Posts: 375
Poder: 15
lbidi Va por buen camino
Gracias nuevamente Neftali. Lo hice con FDMemTable y anda como balazoo..

Saludos
Responder Con Cita
  #7  
Antiguo 18-04-2018
Avatar de lbidi
lbidi lbidi is offline
Miembro
 
Registrado: Oct 2003
Ubicación: Montevideo- URUGUAY
Posts: 375
Poder: 15
lbidi Va por buen camino
Me surge una duda ahora con el siguiente codigo al agregar indices a la tabla.
Código Delphi [-]
with FDMemTable.Indexes.Add do
begin
   Name       := 'xTotal';
   Expression := 'Total';
   Active     := True;
end;
como se hace para indicar que este indice lo quiero descendente ??

Gracias
Responder Con Cita
  #8  
Antiguo 18-04-2018
Avatar de lbidi
lbidi lbidi is offline
Miembro
 
Registrado: Oct 2003
Ubicación: Montevideo- URUGUAY
Posts: 375
Poder: 15
lbidi Va por buen camino
Me respondo yo mismo.

Se hace asi
Código Delphi [-]
FDMemTable.IndexFieldNames := 'Total : D';
aunque el : y la D van juntos, no los pongo porque me sale el emoticon.. y no se como evitarlo.

Saludos
Responder Con Cita
  #9  
Antiguo 18-04-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: Sep 2004
Ubicación: En algún lugar.
Posts: 28.398
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por lbidi Ver Mensaje
aunque el : y la D van juntos, no los pongo porque me sale el emoticon.. y no se como evitarlo.
Con este "comando": [noparse] :D [/noparse]
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Firedac y tabla temporal Mysql lbidi Conexión con bases de datos 3 21-02-2018 19:47:54
Indices con MySQL golf2008 MySQL 1 15-10-2008 15:15:41
Rotura de Indices en MySQL DTAR SQL 2 07-06-2008 02:27:34
Problemas con el manejo de Indices Coco_jac Varios 2 09-05-2006 18:04:18
Consulta de Union y tabla temporal en el nuevo Mysql 5.. ctronx MySQL 2 03-01-2006 16:57:41


La franja horaria es GMT +2. Ahora son las 18:35:37.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi