IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Optimisation d'une recherche et mise à jour [Débat]


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Points : 523
    Points
    523
    Par défaut Optimisation d'une recherche et mise à jour
    Bonjour,
    J'utilise un composant similaire à un TTable et j'ai une boucle qui fait plusieurs recherche dedans avec la fonction Locate. La table grossi au fur et à mesure des insertions de données et je fais plusieurs Locate dans une boucle de traitement. Du coup, le traitement en question devient vite long. Je voudrais savoir s'il est possible de faire ces recherches autrement qu'avec Locate ou existe-il des astuces pour accélérer ces recherches?

    J'utilise un composant similaire à un TQuery pour exécuter des requètes. Les données que j'insère dans le TTable peuvent déja y être ou non. Que faut-il utiliser comme requête (UPDATE, INSERT...) pour insérer la donnée si non présente ou faire la mise à jour si elle est déja dans la table.

    Merci

  2. #2
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Salut,
    Comme le disais a Jibe74 sur une de ces questions, perso j'utilise énormément le filtre sur les TTable au moyen de l'objet TDataSource.
    Cela s'est toujours montré tres rapide et éfficace pour moi. Mais peut etre que se genre de travail ne correspond en rien a ce que tu obtiens avec 'Locate()'; je ne l'ai jamais utilisé, ce qui m'émeu enormement car depuis le temps que je bosse avec TTable j'aurai pu y jeter un oeil quand meme (!). Pour l'insertion et autres, je reste avec les methodes classiques de TTable a 99 % c.a.d Edit(), Append(), etc...
    Pour l'instant sur TTable j'utilise les Query surtout pour la présentation de données.
    Mais ce que je dis, c'est pas parole d'evangile, j'chui pas pro...
    By
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  3. #3
    Membre confirmé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Points : 523
    Points
    523
    Par défaut
    Moi non plus, je suis pas pro.

    J'utilise bien des Edit Append et Post mais il se trouve que je récupère une partie d'une base de donnée MySQL par l'intermédiaire de phpmyadmin qui me génère un fichier texte ayant des instructions SQL. Je traite ce fichier (parce que non exécutable directement par mon TQuery) et je voudrais savoir si il fallait remplacer le INSERT par autre chose pour simplifier et accélérer le code me sert à déterminer si l'enregistrement existe déja. Et j'utilise justement le locate pour savoir si l'enregistrement existe (c'est un peu compliqué en fait puisque je dois faire plusieurs recherche dans plusieurs TTable pour mettre uniquement les informations qui m'interresse dans une seule TTable).

    Je ne comprend pas comment tu fais pour faire un filtre par un DataSource. Il ne faut pas passer par un TQuery pour le faire?

  4. #4
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Quant je lis tout ce qui circule ici, je ne vois que des gens plus éclairés que moi, j'me sens tout petit sur developper.com!
    Bon, néamoins pour le filtre :
    TDataSource->DataSet->Filter = String(texte avec les champs et les valeurs cherchées).
    A tout hasard, a quoi ressemblent les instructions SQL que tu récupères ?
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  5. #5
    Membre confirmé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Points : 523
    Points
    523
    Par défaut
    ce ne sont que des INSERT vers différentes tables mais il y en a beaucoup.

    Je ne savait pas que l'on pouvait directement faire un filtre avec un Datasource. J'utilise ce composant uniquement pour accéder à mes TTable.

Discussions similaires

  1. Réponses: 6
    Dernier message: 28/11/2013, 11h55
  2. Réponses: 8
    Dernier message: 09/01/2007, 16h30
  3. Problème avec une requête de mise à jour
    Par Le Pharaon dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 11/07/2006, 12h16
  4. Réponses: 2
    Dernier message: 10/03/2006, 13h55
  5. Réponses: 6
    Dernier message: 29/11/2005, 19h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo