sql = "SELECT * "
sql = sql & "FROM Batches1 "
sql = sql & "WHERE (((Batches1.[Batch Number]) Not In (SELECT [Batch
Number] from [Batches])));"
Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset)
La table "Batches1" contient quelques 4000 enregistrements
La table "Batches" en contient au moins 10 fois plus
Les tables ont la même structure et contiennent 220 champs (et oui, c'est
beaucoup, mais nécessaire).
Le but est d'ajouter dans la tables "Batches" les enregistrments se trouvant
dans "Batches1" mais pas dans "Batches",
la clé étant "Batch Number"
J'ai essayé avec un "INSERT", et le temps étant très long, j'ai essayé
d'abord de tester s'il y avait des enregistrements à ajouter (avec un test
derrière ces lignes genre rs.recordcount etc... pour les ajouter une par
une)
Mais cette dernière ligne
Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset)
met 10 bonnes minutes à s'exécuter.
bonjour je pense (j'ai pas fait de chrono) que ce serait plus rapide de faire une req de non concordance entre tes tables ou une req UNION, puis de l'utiliser pour ouvrir un recordset, si besoin de recorset
-- Pierre SALAUN MVP Access *******************************************************
"Joël" a écrit dans le message de news: 47d008f8$0$890$
Bonjour tout le monde !
Voici un extrait de procédure :
sql = "SELECT * " sql = sql & "FROM Batches1 " sql = sql & "WHERE (((Batches1.[Batch Number]) Not In (SELECT [Batch Number] from [Batches])));"
Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset)
La table "Batches1" contient quelques 4000 enregistrements La table "Batches" en contient au moins 10 fois plus
Les tables ont la même structure et contiennent 220 champs (et oui, c'est beaucoup, mais nécessaire).
Le but est d'ajouter dans la tables "Batches" les enregistrments se trouvant dans "Batches1" mais pas dans "Batches", la clé étant "Batch Number"
J'ai essayé avec un "INSERT", et le temps étant très long, j'ai essayé d'abord de tester s'il y avait des enregistrements à ajouter (avec un test derrière ces lignes genre rs.recordcount etc... pour les ajouter une par une)
Mais cette dernière ligne Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset) met 10 bonnes minutes à s'exécuter.
Y a-t-il un moyen de faire plus vite ?
Vous en remerciant par avance, --
Bien cordialement,
Joël GARBE www.joelgarbe.fr
bonjour
je pense (j'ai pas fait de chrono) que ce serait plus rapide de faire une
req de non concordance entre tes tables ou une req UNION, puis de l'utiliser
pour ouvrir un recordset, si besoin de recorset
--
Pierre SALAUN
MVP Access
*******************************************************
"Joël" <joel-garbe@wanadoo.fr> a écrit dans le message de news:
47d008f8$0$890$ba4acef3@news.orange.fr...
Bonjour tout le monde !
Voici un extrait de procédure :
sql = "SELECT * "
sql = sql & "FROM Batches1 "
sql = sql & "WHERE (((Batches1.[Batch Number]) Not In (SELECT
[Batch Number] from [Batches])));"
Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset)
La table "Batches1" contient quelques 4000 enregistrements
La table "Batches" en contient au moins 10 fois plus
Les tables ont la même structure et contiennent 220 champs (et oui, c'est
beaucoup, mais nécessaire).
Le but est d'ajouter dans la tables "Batches" les enregistrments se
trouvant dans "Batches1" mais pas dans "Batches",
la clé étant "Batch Number"
J'ai essayé avec un "INSERT", et le temps étant très long, j'ai essayé
d'abord de tester s'il y avait des enregistrements à ajouter (avec un test
derrière ces lignes genre rs.recordcount etc... pour les ajouter une par
une)
Mais cette dernière ligne
Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset)
met 10 bonnes minutes à s'exécuter.
bonjour je pense (j'ai pas fait de chrono) que ce serait plus rapide de faire une req de non concordance entre tes tables ou une req UNION, puis de l'utiliser pour ouvrir un recordset, si besoin de recorset
-- Pierre SALAUN MVP Access *******************************************************
"Joël" a écrit dans le message de news: 47d008f8$0$890$
Bonjour tout le monde !
Voici un extrait de procédure :
sql = "SELECT * " sql = sql & "FROM Batches1 " sql = sql & "WHERE (((Batches1.[Batch Number]) Not In (SELECT [Batch Number] from [Batches])));"
Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset)
La table "Batches1" contient quelques 4000 enregistrements La table "Batches" en contient au moins 10 fois plus
Les tables ont la même structure et contiennent 220 champs (et oui, c'est beaucoup, mais nécessaire).
Le but est d'ajouter dans la tables "Batches" les enregistrments se trouvant dans "Batches1" mais pas dans "Batches", la clé étant "Batch Number"
J'ai essayé avec un "INSERT", et le temps étant très long, j'ai essayé d'abord de tester s'il y avait des enregistrements à ajouter (avec un test derrière ces lignes genre rs.recordcount etc... pour les ajouter une par une)
Mais cette dernière ligne Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset) met 10 bonnes minutes à s'exécuter.
Y a-t-il un moyen de faire plus vite ?
Vous en remerciant par avance, --
Bien cordialement,
Joël GARBE www.joelgarbe.fr
Pierre CFI [mvp]
oui, suite, la req union, sans mettre All, shuntera les doublons
-- Pierre SALAUN MVP Access *******************************************************
"Joël" a écrit dans le message de news: 47d008f8$0$890$
Bonjour tout le monde !
Voici un extrait de procédure :
sql = "SELECT * " sql = sql & "FROM Batches1 " sql = sql & "WHERE (((Batches1.[Batch Number]) Not In (SELECT [Batch Number] from [Batches])));"
Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset)
La table "Batches1" contient quelques 4000 enregistrements La table "Batches" en contient au moins 10 fois plus
Les tables ont la même structure et contiennent 220 champs (et oui, c'est beaucoup, mais nécessaire).
Le but est d'ajouter dans la tables "Batches" les enregistrments se trouvant dans "Batches1" mais pas dans "Batches", la clé étant "Batch Number"
J'ai essayé avec un "INSERT", et le temps étant très long, j'ai essayé d'abord de tester s'il y avait des enregistrements à ajouter (avec un test derrière ces lignes genre rs.recordcount etc... pour les ajouter une par une)
Mais cette dernière ligne Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset) met 10 bonnes minutes à s'exécuter.
Y a-t-il un moyen de faire plus vite ?
Vous en remerciant par avance, --
Bien cordialement,
Joël GARBE www.joelgarbe.fr
oui, suite, la req union, sans mettre All, shuntera les doublons
--
Pierre SALAUN
MVP Access
*******************************************************
"Joël" <joel-garbe@wanadoo.fr> a écrit dans le message de news:
47d008f8$0$890$ba4acef3@news.orange.fr...
Bonjour tout le monde !
Voici un extrait de procédure :
sql = "SELECT * "
sql = sql & "FROM Batches1 "
sql = sql & "WHERE (((Batches1.[Batch Number]) Not In (SELECT
[Batch Number] from [Batches])));"
Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset)
La table "Batches1" contient quelques 4000 enregistrements
La table "Batches" en contient au moins 10 fois plus
Les tables ont la même structure et contiennent 220 champs (et oui, c'est
beaucoup, mais nécessaire).
Le but est d'ajouter dans la tables "Batches" les enregistrments se
trouvant dans "Batches1" mais pas dans "Batches",
la clé étant "Batch Number"
J'ai essayé avec un "INSERT", et le temps étant très long, j'ai essayé
d'abord de tester s'il y avait des enregistrements à ajouter (avec un test
derrière ces lignes genre rs.recordcount etc... pour les ajouter une par
une)
Mais cette dernière ligne
Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset)
met 10 bonnes minutes à s'exécuter.
oui, suite, la req union, sans mettre All, shuntera les doublons
-- Pierre SALAUN MVP Access *******************************************************
"Joël" a écrit dans le message de news: 47d008f8$0$890$
Bonjour tout le monde !
Voici un extrait de procédure :
sql = "SELECT * " sql = sql & "FROM Batches1 " sql = sql & "WHERE (((Batches1.[Batch Number]) Not In (SELECT [Batch Number] from [Batches])));"
Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset)
La table "Batches1" contient quelques 4000 enregistrements La table "Batches" en contient au moins 10 fois plus
Les tables ont la même structure et contiennent 220 champs (et oui, c'est beaucoup, mais nécessaire).
Le but est d'ajouter dans la tables "Batches" les enregistrments se trouvant dans "Batches1" mais pas dans "Batches", la clé étant "Batch Number"
J'ai essayé avec un "INSERT", et le temps étant très long, j'ai essayé d'abord de tester s'il y avait des enregistrements à ajouter (avec un test derrière ces lignes genre rs.recordcount etc... pour les ajouter une par une)
Mais cette dernière ligne Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset) met 10 bonnes minutes à s'exécuter.
Y a-t-il un moyen de faire plus vite ?
Vous en remerciant par avance, --
Bien cordialement,
Joël GARBE www.joelgarbe.fr
Joël
Merci Pierre je vais tester cela.
L'autre solution que j'envisageais (que j'ai testée avec succès) était de prendre les enregistrements de la table "Batches1", regarder si le "Batch Number" existe dans la table Batches, si non, ajouter l'enregistrement testé dans la table "Batches".
Pas très esthétique, mais efficace semble-t-il.
Je vais voir côté Union.
Encore merci
--
Bien cordialement,
Joël GARBE www.joelgarbe.fr "Pierre CFI [mvp]" a écrit dans le message de news:
oui, suite, la req union, sans mettre All, shuntera les doublons
-- Pierre SALAUN MVP Access *******************************************************
"Joël" a écrit dans le message de news: 47d008f8$0$890$
Bonjour tout le monde !
Voici un extrait de procédure :
sql = "SELECT * " sql = sql & "FROM Batches1 " sql = sql & "WHERE (((Batches1.[Batch Number]) Not In (SELECT [Batch Number] from [Batches])));"
Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset)
La table "Batches1" contient quelques 4000 enregistrements La table "Batches" en contient au moins 10 fois plus
Les tables ont la même structure et contiennent 220 champs (et oui, c'est beaucoup, mais nécessaire).
Le but est d'ajouter dans la tables "Batches" les enregistrments se trouvant dans "Batches1" mais pas dans "Batches", la clé étant "Batch Number"
J'ai essayé avec un "INSERT", et le temps étant très long, j'ai essayé d'abord de tester s'il y avait des enregistrements à ajouter (avec un test derrière ces lignes genre rs.recordcount etc... pour les ajouter une par une)
Mais cette dernière ligne Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset) met 10 bonnes minutes à s'exécuter.
Y a-t-il un moyen de faire plus vite ?
Vous en remerciant par avance, --
Bien cordialement,
Joël GARBE www.joelgarbe.fr
Merci Pierre je vais tester cela.
L'autre solution que j'envisageais (que j'ai testée avec succès) était de
prendre les enregistrements de la table "Batches1", regarder si le
"Batch Number" existe dans la table Batches, si non, ajouter
l'enregistrement testé dans la table "Batches".
Pas très esthétique, mais efficace semble-t-il.
Je vais voir côté Union.
Encore merci
--
Bien cordialement,
Joël GARBE
www.joelgarbe.fr
"Pierre CFI [mvp]" <xxx_pierresalaun@wanadoo.fr> a écrit dans le message de
news: eUpoQ85fIHA.5996@TK2MSFTNGP04.phx.gbl...
oui, suite, la req union, sans mettre All, shuntera les doublons
--
Pierre SALAUN
MVP Access
*******************************************************
"Joël" <joel-garbe@wanadoo.fr> a écrit dans le message de news:
47d008f8$0$890$ba4acef3@news.orange.fr...
Bonjour tout le monde !
Voici un extrait de procédure :
sql = "SELECT * "
sql = sql & "FROM Batches1 "
sql = sql & "WHERE (((Batches1.[Batch Number]) Not In (SELECT
[Batch Number] from [Batches])));"
Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset)
La table "Batches1" contient quelques 4000 enregistrements
La table "Batches" en contient au moins 10 fois plus
Les tables ont la même structure et contiennent 220 champs (et oui, c'est
beaucoup, mais nécessaire).
Le but est d'ajouter dans la tables "Batches" les enregistrments se
trouvant dans "Batches1" mais pas dans "Batches",
la clé étant "Batch Number"
J'ai essayé avec un "INSERT", et le temps étant très long, j'ai essayé
d'abord de tester s'il y avait des enregistrements à ajouter (avec un
test derrière ces lignes genre rs.recordcount etc... pour les ajouter une
par une)
Mais cette dernière ligne
Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset)
met 10 bonnes minutes à s'exécuter.
L'autre solution que j'envisageais (que j'ai testée avec succès) était de prendre les enregistrements de la table "Batches1", regarder si le "Batch Number" existe dans la table Batches, si non, ajouter l'enregistrement testé dans la table "Batches".
Pas très esthétique, mais efficace semble-t-il.
Je vais voir côté Union.
Encore merci
--
Bien cordialement,
Joël GARBE www.joelgarbe.fr "Pierre CFI [mvp]" a écrit dans le message de news:
oui, suite, la req union, sans mettre All, shuntera les doublons
-- Pierre SALAUN MVP Access *******************************************************
"Joël" a écrit dans le message de news: 47d008f8$0$890$
Bonjour tout le monde !
Voici un extrait de procédure :
sql = "SELECT * " sql = sql & "FROM Batches1 " sql = sql & "WHERE (((Batches1.[Batch Number]) Not In (SELECT [Batch Number] from [Batches])));"
Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset)
La table "Batches1" contient quelques 4000 enregistrements La table "Batches" en contient au moins 10 fois plus
Les tables ont la même structure et contiennent 220 champs (et oui, c'est beaucoup, mais nécessaire).
Le but est d'ajouter dans la tables "Batches" les enregistrments se trouvant dans "Batches1" mais pas dans "Batches", la clé étant "Batch Number"
J'ai essayé avec un "INSERT", et le temps étant très long, j'ai essayé d'abord de tester s'il y avait des enregistrements à ajouter (avec un test derrière ces lignes genre rs.recordcount etc... pour les ajouter une par une)
Mais cette dernière ligne Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset) met 10 bonnes minutes à s'exécuter.
Y a-t-il un moyen de faire plus vite ?
Vous en remerciant par avance, --
Bien cordialement,
Joël GARBE www.joelgarbe.fr
Michel_D
Bonjour,
"Joël" a écrit dans le message de news:47d008f8$0$890$
Bonjour tout le monde !
Voici un extrait de procédure :
sql = "SELECT * " sql = sql & "FROM Batches1 " sql = sql & "WHERE (((Batches1.[Batch Number]) Not In (SELECT [Batch Number] from [Batches])));"
Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset)
La table "Batches1" contient quelques 4000 enregistrements La table "Batches" en contient au moins 10 fois plus
Les tables ont la même structure et contiennent 220 champs (et oui, c'est beaucoup, mais nécessaire).
Hum, je pense que le problème de conception ne doit pas être loin, sinon généralement sur une base bien conçu il suffit de vérifier le bon positionnement des index.
Le but est d'ajouter dans la tables "Batches" les enregistrments se trouvant dans "Batches1" mais pas dans "Batches", la clé étant "Batch Number"
J'ai essayé avec un "INSERT", et le temps étant très long, j'ai essayé d'abord de tester s'il y avait des enregistrements à ajouter (avec un test derrière ces lignes genre rs.recordcount etc... pour les ajouter une par une)
Mais cette dernière ligne Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset) met 10 bonnes minutes à s'exécuter.
Y a-t-il un moyen de faire plus vite ?
Je dirais revoir la conception de la base, mais c'est apparemment une option que tu as déjà écartée.
Bonjour,
"Joël" <joel-garbe@wanadoo.fr> a écrit dans le message de news:47d008f8$0$890$ba4acef3@news.orange.fr...
Bonjour tout le monde !
Voici un extrait de procédure :
sql = "SELECT * "
sql = sql & "FROM Batches1 "
sql = sql & "WHERE (((Batches1.[Batch Number]) Not In (SELECT [Batch
Number] from [Batches])));"
Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset)
La table "Batches1" contient quelques 4000 enregistrements
La table "Batches" en contient au moins 10 fois plus
Les tables ont la même structure et contiennent 220 champs (et oui, c'est
beaucoup, mais nécessaire).
Hum, je pense que le problème de conception ne doit pas être loin,
sinon généralement sur une base bien conçu il suffit de vérifier le bon
positionnement des index.
Le but est d'ajouter dans la tables "Batches" les enregistrments se trouvant
dans "Batches1" mais pas dans "Batches",
la clé étant "Batch Number"
J'ai essayé avec un "INSERT", et le temps étant très long, j'ai essayé
d'abord de tester s'il y avait des enregistrements à ajouter (avec un test
derrière ces lignes genre rs.recordcount etc... pour les ajouter une par
une)
Mais cette dernière ligne
Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset)
met 10 bonnes minutes à s'exécuter.
Y a-t-il un moyen de faire plus vite ?
Je dirais revoir la conception de la base, mais c'est apparemment une
option que tu as déjà écartée.
"Joël" a écrit dans le message de news:47d008f8$0$890$
Bonjour tout le monde !
Voici un extrait de procédure :
sql = "SELECT * " sql = sql & "FROM Batches1 " sql = sql & "WHERE (((Batches1.[Batch Number]) Not In (SELECT [Batch Number] from [Batches])));"
Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset)
La table "Batches1" contient quelques 4000 enregistrements La table "Batches" en contient au moins 10 fois plus
Les tables ont la même structure et contiennent 220 champs (et oui, c'est beaucoup, mais nécessaire).
Hum, je pense que le problème de conception ne doit pas être loin, sinon généralement sur une base bien conçu il suffit de vérifier le bon positionnement des index.
Le but est d'ajouter dans la tables "Batches" les enregistrments se trouvant dans "Batches1" mais pas dans "Batches", la clé étant "Batch Number"
J'ai essayé avec un "INSERT", et le temps étant très long, j'ai essayé d'abord de tester s'il y avait des enregistrements à ajouter (avec un test derrière ces lignes genre rs.recordcount etc... pour les ajouter une par une)
Mais cette dernière ligne Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset) met 10 bonnes minutes à s'exécuter.
Y a-t-il un moyen de faire plus vite ?
Je dirais revoir la conception de la base, mais c'est apparemment une option que tu as déjà écartée.
Joël
Merci Michel
Effectivement, c'est une option que j'ai écartée.
Pour information, la tables "Batches1" provient d'un autre base de données qu'il est nécessaire de consolider dans la principale.
Encore merci pour le temps passé, --
Bien cordialement,
Joël GARBE www.joelgarbe.fr "Michel_D" a écrit dans le message de news: fqp3o4$9ol$
Bonjour,
"Joël" a écrit dans le message de news:47d008f8$0$890$
Bonjour tout le monde !
Voici un extrait de procédure :
sql = "SELECT * " sql = sql & "FROM Batches1 " sql = sql & "WHERE (((Batches1.[Batch Number]) Not In (SELECT [Batch Number] from [Batches])));"
Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset)
La table "Batches1" contient quelques 4000 enregistrements La table "Batches" en contient au moins 10 fois plus
Les tables ont la même structure et contiennent 220 champs (et oui, c'est beaucoup, mais nécessaire).
Hum, je pense que le problème de conception ne doit pas être loin, sinon généralement sur une base bien conçu il suffit de vérifier le bon positionnement des index.
Le but est d'ajouter dans la tables "Batches" les enregistrments se trouvant dans "Batches1" mais pas dans "Batches", la clé étant "Batch Number"
J'ai essayé avec un "INSERT", et le temps étant très long, j'ai essayé d'abord de tester s'il y avait des enregistrements à ajouter (avec un test derrière ces lignes genre rs.recordcount etc... pour les ajouter une par une)
Mais cette dernière ligne Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset) met 10 bonnes minutes à s'exécuter.
Y a-t-il un moyen de faire plus vite ?
Je dirais revoir la conception de la base, mais c'est apparemment une option que tu as déjà écartée.
Merci Michel
Effectivement, c'est une option que j'ai écartée.
Pour information, la tables "Batches1" provient d'un autre base de données
qu'il est nécessaire de consolider dans la principale.
Encore merci pour le temps passé,
--
Bien cordialement,
Joël GARBE
www.joelgarbe.fr
"Michel_D" <michel.NOSPAM@orange-ft.com.invalid> a écrit dans le message de
news: fqp3o4$9ol$1@news.rd.francetelecom.fr...
Bonjour,
"Joël" <joel-garbe@wanadoo.fr> a écrit dans le message de
news:47d008f8$0$890$ba4acef3@news.orange.fr...
Bonjour tout le monde !
Voici un extrait de procédure :
sql = "SELECT * "
sql = sql & "FROM Batches1 "
sql = sql & "WHERE (((Batches1.[Batch Number]) Not In (SELECT
[Batch
Number] from [Batches])));"
Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset)
La table "Batches1" contient quelques 4000 enregistrements
La table "Batches" en contient au moins 10 fois plus
Les tables ont la même structure et contiennent 220 champs (et oui, c'est
beaucoup, mais nécessaire).
Hum, je pense que le problème de conception ne doit pas être loin,
sinon généralement sur une base bien conçu il suffit de vérifier le bon
positionnement des index.
Le but est d'ajouter dans la tables "Batches" les enregistrments se
trouvant
dans "Batches1" mais pas dans "Batches",
la clé étant "Batch Number"
J'ai essayé avec un "INSERT", et le temps étant très long, j'ai essayé
d'abord de tester s'il y avait des enregistrements à ajouter (avec un
test
derrière ces lignes genre rs.recordcount etc... pour les ajouter une par
une)
Mais cette dernière ligne
Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset)
met 10 bonnes minutes à s'exécuter.
Y a-t-il un moyen de faire plus vite ?
Je dirais revoir la conception de la base, mais c'est apparemment une
option que tu as déjà écartée.
Pour information, la tables "Batches1" provient d'un autre base de données qu'il est nécessaire de consolider dans la principale.
Encore merci pour le temps passé, --
Bien cordialement,
Joël GARBE www.joelgarbe.fr "Michel_D" a écrit dans le message de news: fqp3o4$9ol$
Bonjour,
"Joël" a écrit dans le message de news:47d008f8$0$890$
Bonjour tout le monde !
Voici un extrait de procédure :
sql = "SELECT * " sql = sql & "FROM Batches1 " sql = sql & "WHERE (((Batches1.[Batch Number]) Not In (SELECT [Batch Number] from [Batches])));"
Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset)
La table "Batches1" contient quelques 4000 enregistrements La table "Batches" en contient au moins 10 fois plus
Les tables ont la même structure et contiennent 220 champs (et oui, c'est beaucoup, mais nécessaire).
Hum, je pense que le problème de conception ne doit pas être loin, sinon généralement sur une base bien conçu il suffit de vérifier le bon positionnement des index.
Le but est d'ajouter dans la tables "Batches" les enregistrments se trouvant dans "Batches1" mais pas dans "Batches", la clé étant "Batch Number"
J'ai essayé avec un "INSERT", et le temps étant très long, j'ai essayé d'abord de tester s'il y avait des enregistrements à ajouter (avec un test derrière ces lignes genre rs.recordcount etc... pour les ajouter une par une)
Mais cette dernière ligne Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset) met 10 bonnes minutes à s'exécuter.
Y a-t-il un moyen de faire plus vite ?
Je dirais revoir la conception de la base, mais c'est apparemment une option que tu as déjà écartée.
pbserv
Bonjour,
une solution probablement plus rapide : SELECT * FROM Batches1 Left Join Batches On Batches1.[Batch Number]ºtches.[Batch Number] WHERE Batches.[Batch Number] Is Null
Vérifier aussi que les 2 colonnes [Batch Number] sont indexées et Sans doublons si possible (ou clefs primaires).
Philippe
On 6 mar, 17:56, "Joël" wrote:
Merci Michel
Effectivement, c'est une option que j'ai écartée.
Pour information, la tables "Batches1" provient d'un autre base de donné es qu'il est nécessaire de consolider dans la principale.
Encore merci pour le temps passé, --
Bien cordialement,
Joël GARBEwww.joelgarbe.fr "Michel_D" a écrit dans le message denews: fqp3o4$9o__BEGIN_MASK_n#9g02mG7!__...__END_MASK_i?a63jfAD$ rd.francetelecom.fr...
Bonjour,
"Joël" a écrit dans le message de news:47d008f8$0$890$
Bonjour tout le monde !
Voici un extrait de procédure :
sql = "SELECT * " sql = sql & "FROM Batches1 " sql = sql & "WHERE (((Batches1.[Batch Number]) Not In (SELECT [Batch Number] from [Batches])));"
Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset)
La table "Batches1" contient quelques 4000 enregistrements La table "Batches" en contient au moins 10 fois plus
Les tables ont la même structure et contiennent 220 champs (et oui, c 'est beaucoup, mais nécessaire).
Hum, je pense que le problème de conception ne doit pas être loin, sinon généralement sur une base bien conçu il suffit de vérifier le bon positionnement des index.
Le but est d'ajouter dans la tables "Batches" les enregistrments se trouvant dans "Batches1" mais pas dans "Batches", la clé étant "Batch Number"
J'ai essayé avec un "INSERT", et le temps étant très long, j'ai e ssayé d'abord de tester s'il y avait des enregistrements à ajouter (avec un test derrière ces lignes genre rs.recordcount etc... pour les ajouter une par une)
Mais cette dernière ligne Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset) met 10 bonnes minutes à s'exécuter.
Y a-t-il un moyen de faire plus vite ?
Je dirais revoir la conception de la base, mais c'est apparemment une option que tu as déjà écartée.- Masquer le texte des messages pr écédents -
- Afficher le texte des messages précédents -
Bonjour,
une solution probablement plus rapide :
SELECT * FROM Batches1 Left Join Batches On Batches1.[Batch
Number]=Batches.[Batch Number]
WHERE Batches.[Batch Number] Is Null
Vérifier aussi que les 2 colonnes [Batch Number] sont indexées et Sans
doublons si possible (ou clefs primaires).
Philippe
On 6 mar, 17:56, "Joël" <joel-ga...@wanadoo.fr> wrote:
Merci Michel
Effectivement, c'est une option que j'ai écartée.
Pour information, la tables "Batches1" provient d'un autre base de donné es
qu'il est nécessaire de consolider dans la principale.
Encore merci pour le temps passé,
--
Bien cordialement,
Joël GARBEwww.joelgarbe.fr
"Michel_D" <michel.NOS...@orange-ft.com.invalid> a écrit dans le message denews: fqp3o4$9o__BEGIN_MASK_n#9g02mG7!__...__END_MASK_i?a63jfAD$z__@news. rd.francetelecom.fr...
Bonjour,
"Joël" <joel-ga...@wanadoo.fr> a écrit dans le message de
news:47d008f8$0$890$ba4acef3@news.orange.fr...
Bonjour tout le monde !
Voici un extrait de procédure :
sql = "SELECT * "
sql = sql & "FROM Batches1 "
sql = sql & "WHERE (((Batches1.[Batch Number]) Not In (SELECT
[Batch
Number] from [Batches])));"
Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset)
La table "Batches1" contient quelques 4000 enregistrements
La table "Batches" en contient au moins 10 fois plus
Les tables ont la même structure et contiennent 220 champs (et oui, c 'est
beaucoup, mais nécessaire).
Hum, je pense que le problème de conception ne doit pas être loin,
sinon généralement sur une base bien conçu il suffit de vérifier le bon
positionnement des index.
Le but est d'ajouter dans la tables "Batches" les enregistrments se
trouvant
dans "Batches1" mais pas dans "Batches",
la clé étant "Batch Number"
J'ai essayé avec un "INSERT", et le temps étant très long, j'ai e ssayé
d'abord de tester s'il y avait des enregistrements à ajouter (avec un
test
derrière ces lignes genre rs.recordcount etc... pour les ajouter une par
une)
Mais cette dernière ligne
Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset)
met 10 bonnes minutes à s'exécuter.
Y a-t-il un moyen de faire plus vite ?
Je dirais revoir la conception de la base, mais c'est apparemment une
option que tu as déjà écartée.- Masquer le texte des messages pr écédents -
une solution probablement plus rapide : SELECT * FROM Batches1 Left Join Batches On Batches1.[Batch Number]ºtches.[Batch Number] WHERE Batches.[Batch Number] Is Null
Vérifier aussi que les 2 colonnes [Batch Number] sont indexées et Sans doublons si possible (ou clefs primaires).
Philippe
On 6 mar, 17:56, "Joël" wrote:
Merci Michel
Effectivement, c'est une option que j'ai écartée.
Pour information, la tables "Batches1" provient d'un autre base de donné es qu'il est nécessaire de consolider dans la principale.
Encore merci pour le temps passé, --
Bien cordialement,
Joël GARBEwww.joelgarbe.fr "Michel_D" a écrit dans le message denews: fqp3o4$9o__BEGIN_MASK_n#9g02mG7!__...__END_MASK_i?a63jfAD$ rd.francetelecom.fr...
Bonjour,
"Joël" a écrit dans le message de news:47d008f8$0$890$
Bonjour tout le monde !
Voici un extrait de procédure :
sql = "SELECT * " sql = sql & "FROM Batches1 " sql = sql & "WHERE (((Batches1.[Batch Number]) Not In (SELECT [Batch Number] from [Batches])));"
Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset)
La table "Batches1" contient quelques 4000 enregistrements La table "Batches" en contient au moins 10 fois plus
Les tables ont la même structure et contiennent 220 champs (et oui, c 'est beaucoup, mais nécessaire).
Hum, je pense que le problème de conception ne doit pas être loin, sinon généralement sur une base bien conçu il suffit de vérifier le bon positionnement des index.
Le but est d'ajouter dans la tables "Batches" les enregistrments se trouvant dans "Batches1" mais pas dans "Batches", la clé étant "Batch Number"
J'ai essayé avec un "INSERT", et le temps étant très long, j'ai e ssayé d'abord de tester s'il y avait des enregistrements à ajouter (avec un test derrière ces lignes genre rs.recordcount etc... pour les ajouter une par une)
Mais cette dernière ligne Set Rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset) met 10 bonnes minutes à s'exécuter.
Y a-t-il un moyen de faire plus vite ?
Je dirais revoir la conception de la base, mais c'est apparemment une option que tu as déjà écartée.- Masquer le texte des messages pr écédents -