Une différence de vitesse entre SQL et Access que je ne comprends pas. [Résolu]

4u4me4us 781 Messages postés lundi 22 janvier 2007Date d'inscription 30 octobre 2013 Dernière intervention - 15 août 2011 à 12:34 - Dernière réponse : 4u4me4us 781 Messages postés lundi 22 janvier 2007Date d'inscription 30 octobre 2013 Dernière intervention
- 17 août 2011 à 12:01
Bonjour à tous,

J'ai repris un code vb6 pour des bases de données Access.

Les bases de données sont faites que une base de donnés a une table. Exemple, base de données « A » à une seule table « a » ainsi de suite. Tous les champs des tous les table sauf les ID sont des strings.

Le code vb6 ouvre toutes les bases et tables au début puis les fermes à la fin (objet DAO). La recherche de valeur ce fait par le listing de tout la table. Une fois que l'on la trouvé dans la table « a » en la liste dans la table « b » ainsi de suite.

En ma demandé de refaire le code sous vb6 en gardant la structure de base de donnée mais pour MSSql.

J'ai donc exporté toute les DB Access dans mon MS SQL. J'ai refait le code sous forme de requêtes. J'ouvre la base de donnée et sa table uniquement dans la fonction qui on a besoin et je la referme. Vu la disposition des table je suis obligé (je crois) de réfère la requête sur la table « b » ainsi de suite.

Malgré tout je suis épaté par le fait que ma version aye plusieurs seconde de retard que la version Access. C vraiment évidant et je ne vois pas pour quoi.

Cela est-il du au fait que j'ouvre trop souvent la connexion ?
Cela est-il du fait que la structure des bases soit stupide ?
Access est-il plus rapide que MySQL ?
Bien que les tables soient tout dans des bases différentes, puis-je tout de même faire des jointures ?

Bien sur je me suis remis en cause (C tjrs par là que je commence). J'ai refait plusieurs fois les fonctions. Mais avant de demander à refaire tout le concept des bases de données, je voudrais avoir votre avis.

Merci.
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
ed73 276 Messages postés lundi 8 septembre 2008Date d'inscription 15 avril 2013 Dernière intervention - 16 août 2011 à 19:22
3
Merci
Oui, il faut juste maintenir ta connexion.

On peut faire des jointures entre 2 bases. Tu te connectes à une base puis tu fais une requête SQL qui fait la jointure avec une autre. Par exemple si tu es connecté à la base A et que tu veux une jointure sur la base B :

Select ta.*, tb.*
from a ta, B..b tb
where ta.x = tb.y

Cette syntaxe fonctionne en Sybase, pour MySql ce sera peut-être différent.

Merci ed73 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de ed73
ed73 276 Messages postés lundi 8 septembre 2008Date d'inscription 15 avril 2013 Dernière intervention - 16 août 2011 à 17:31
0
Merci
Bonjour,

En général on se connecte à la base une seule fois au lancement du logiciel et on ferme la connexion à la fin.

Ensuite, la structure est en effet vraiment stupide, quel peut bien être l’intérêt d'avoir une base pour une table ?

Je pense que si tu regroupais le tout dans une seule base, ça irait bien mieux.
Commenter la réponse de ed73
4u4me4us 781 Messages postés lundi 22 janvier 2007Date d'inscription 30 octobre 2013 Dernière intervention - 16 août 2011 à 17:56
0
Merci
Merci de ta réponse.
Tu me demande "quel peut bien être l’intérêt d'avoir une base pour une table ? " Je ne sais pas

Par contre tu me dis "général on se connecte à la base une seule fois au lancement du logiciel et on ferme la connexion à la fin". Si je te comprend bien quand je dois chercher une nouvelle valeur je fais un MaRecordSet.execute (Objet ADO) tout simplement ?

Une dernière question. Peut-on faire une jointeur entre deux table de deux db diff. ?
Commenter la réponse de 4u4me4us
4u4me4us 781 Messages postés lundi 22 janvier 2007Date d'inscription 30 octobre 2013 Dernière intervention - 17 août 2011 à 12:01
0
Merci
Merci pour tout
Commenter la réponse de 4u4me4us

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.