j'ai une table avec des personnes, sur laquelle je dois comparer les champs
suivants :
nom
prenom
adresse3
code postal
ville
la table comporte 1 million de lignes.
Pour gagner du temps j'ai donc creer une champ integer.
suivant
checksum( isnull(nom,'') + isnull(prenom,'') + isnull(adresse3,'') +
isnull(CP,'') + isnull(ville,'') )
se qui me donne un integer bien plus simple et rapide à comparer.
seulement voila j'ai plusieurs fois le meme numero pour des personnes qui
n'ont rien à voir entre elle.
bien sur cela me creer de grave problemes d'affectation.
est-ce que je suis parti dans la mauvaise direction ?
qu'utiliseriez vous comme methode pour repondre à mon besoin ?
y'a t'il des limitation à la fonction checksum ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Fred BROUARD
Christophe a écrit :
bonjour,
j'ai une table avec des personnes, sur laquelle je dois comparer les champs suivants : nom prenom adresse3 code postal ville
la table comporte 1 million de lignes. Pour gagner du temps j'ai donc creer une champ integer. suivant
checksum( isnull(nom,'') + isnull(prenom,'') + isnull(adresse3,'') + isnull(CP,'') + isnull(ville,'') ) se qui me donne un integer bien plus simple et rapide à comparer. seulement voila j'ai plusieurs fois le meme numero pour des personnes qui n'ont rien à voir entre elle. bien sur cela me creer de grave problemes d'affectation.
est-ce que je suis parti dans la mauvaise direction ? qu'utiliseriez vous comme methode pour repondre à mon besoin ? y'a t'il des limitation à la fonction checksum ?
Checksum ne garantie pas l'unicité sur des chaînes très longues.
Mais vous pouvez quand même ce faire en ajoutant le double contrôle :
SELECT * FROM ( SELECT * FROM MaTable WHERE MonCheckSum = 5623131321 ) T WHERE nom = 'toto' AND prenom = 'marcel' AND ...
A +
Merci par avance ! Ch.
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
Christophe a écrit :
bonjour,
j'ai une table avec des personnes, sur laquelle je dois comparer les
champs suivants :
nom
prenom
adresse3
code postal
ville
la table comporte 1 million de lignes.
Pour gagner du temps j'ai donc creer une champ integer.
suivant
checksum( isnull(nom,'') + isnull(prenom,'') + isnull(adresse3,'') +
isnull(CP,'') + isnull(ville,'') )
se qui me donne un integer bien plus simple et rapide à comparer.
seulement voila j'ai plusieurs fois le meme numero pour des personnes
qui n'ont rien à voir entre elle.
bien sur cela me creer de grave problemes d'affectation.
est-ce que je suis parti dans la mauvaise direction ?
qu'utiliseriez vous comme methode pour repondre à mon besoin ?
y'a t'il des limitation à la fonction checksum ?
Checksum ne garantie pas l'unicité sur des chaînes très longues.
Mais vous pouvez quand même ce faire en ajoutant le double contrôle :
SELECT *
FROM
(
SELECT *
FROM MaTable
WHERE MonCheckSum = 5623131321
) T
WHERE nom = 'toto'
AND prenom = 'marcel'
AND ...
A +
Merci par avance !
Ch.
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
j'ai une table avec des personnes, sur laquelle je dois comparer les champs suivants : nom prenom adresse3 code postal ville
la table comporte 1 million de lignes. Pour gagner du temps j'ai donc creer une champ integer. suivant
checksum( isnull(nom,'') + isnull(prenom,'') + isnull(adresse3,'') + isnull(CP,'') + isnull(ville,'') ) se qui me donne un integer bien plus simple et rapide à comparer. seulement voila j'ai plusieurs fois le meme numero pour des personnes qui n'ont rien à voir entre elle. bien sur cela me creer de grave problemes d'affectation.
est-ce que je suis parti dans la mauvaise direction ? qu'utiliseriez vous comme methode pour repondre à mon besoin ? y'a t'il des limitation à la fonction checksum ?
Checksum ne garantie pas l'unicité sur des chaînes très longues.
Mais vous pouvez quand même ce faire en ajoutant le double contrôle :
SELECT * FROM ( SELECT * FROM MaTable WHERE MonCheckSum = 5623131321 ) T WHERE nom = 'toto' AND prenom = 'marcel' AND ...
A +
Merci par avance ! Ch.
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
Christophe
Merde c'est pas cool ce que tu me dis la, ca doit venir de la le probleme, ou j'ai des doublons de checksum alors que ces personnes non strictement rien à voir !
quelles autres methode je pourrais utiliser ? car le probleme c'est que confronter quelques milliers de ligne à plus d'un million ca prends quand meme un certain temps et j'aurais le cas tres prochainement pour des bases bien plus lourde ! 4 millions sur 20 millions !!
cette solution m'avait bien plus.
"Fred BROUARD" a écrit dans le message de news:
Christophe a écrit :
bonjour,
j'ai une table avec des personnes, sur laquelle je dois comparer les champs suivants : nom prenom adresse3 code postal ville
la table comporte 1 million de lignes. Pour gagner du temps j'ai donc creer une champ integer. suivant
checksum( isnull(nom,'') + isnull(prenom,'') + isnull(adresse3,'') + isnull(CP,'') + isnull(ville,'') ) se qui me donne un integer bien plus simple et rapide à comparer. seulement voila j'ai plusieurs fois le meme numero pour des personnes qui n'ont rien à voir entre elle. bien sur cela me creer de grave problemes d'affectation.
est-ce que je suis parti dans la mauvaise direction ? qu'utiliseriez vous comme methode pour repondre à mon besoin ? y'a t'il des limitation à la fonction checksum ?
Checksum ne garantie pas l'unicité sur des chaînes très longues.
Mais vous pouvez quand même ce faire en ajoutant le double contrôle :
SELECT * FROM ( SELECT * FROM MaTable WHERE MonCheckSum = 5623131321 ) T WHERE nom = 'toto' AND prenom = 'marcel' AND ...
A +
Merci par avance ! Ch.
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
Merde c'est pas cool ce que tu me dis la, ca doit venir de la le probleme,
ou j'ai des doublons de checksum alors que ces personnes non strictement
rien à voir !
quelles autres methode je pourrais utiliser ? car le probleme c'est que
confronter quelques milliers de ligne à plus d'un million ca prends quand
meme un certain temps et j'aurais le cas tres prochainement pour des bases
bien plus lourde !
4 millions sur 20 millions !!
cette solution m'avait bien plus.
"Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de
news:ulPr1OopHHA.960@TK2MSFTNGP03.phx.gbl...
Christophe a écrit :
bonjour,
j'ai une table avec des personnes, sur laquelle je dois comparer les
champs suivants :
nom
prenom
adresse3
code postal
ville
la table comporte 1 million de lignes.
Pour gagner du temps j'ai donc creer une champ integer.
suivant
checksum( isnull(nom,'') + isnull(prenom,'') + isnull(adresse3,'') +
isnull(CP,'') + isnull(ville,'') )
se qui me donne un integer bien plus simple et rapide à comparer.
seulement voila j'ai plusieurs fois le meme numero pour des personnes qui
n'ont rien à voir entre elle.
bien sur cela me creer de grave problemes d'affectation.
est-ce que je suis parti dans la mauvaise direction ?
qu'utiliseriez vous comme methode pour repondre à mon besoin ?
y'a t'il des limitation à la fonction checksum ?
Checksum ne garantie pas l'unicité sur des chaînes très longues.
Mais vous pouvez quand même ce faire en ajoutant le double contrôle :
SELECT *
FROM
(
SELECT *
FROM MaTable
WHERE MonCheckSum = 5623131321
) T
WHERE nom = 'toto'
AND prenom = 'marcel'
AND ...
A +
Merci par avance !
Ch.
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Merde c'est pas cool ce que tu me dis la, ca doit venir de la le probleme, ou j'ai des doublons de checksum alors que ces personnes non strictement rien à voir !
quelles autres methode je pourrais utiliser ? car le probleme c'est que confronter quelques milliers de ligne à plus d'un million ca prends quand meme un certain temps et j'aurais le cas tres prochainement pour des bases bien plus lourde ! 4 millions sur 20 millions !!
cette solution m'avait bien plus.
"Fred BROUARD" a écrit dans le message de news:
Christophe a écrit :
bonjour,
j'ai une table avec des personnes, sur laquelle je dois comparer les champs suivants : nom prenom adresse3 code postal ville
la table comporte 1 million de lignes. Pour gagner du temps j'ai donc creer une champ integer. suivant
checksum( isnull(nom,'') + isnull(prenom,'') + isnull(adresse3,'') + isnull(CP,'') + isnull(ville,'') ) se qui me donne un integer bien plus simple et rapide à comparer. seulement voila j'ai plusieurs fois le meme numero pour des personnes qui n'ont rien à voir entre elle. bien sur cela me creer de grave problemes d'affectation.
est-ce que je suis parti dans la mauvaise direction ? qu'utiliseriez vous comme methode pour repondre à mon besoin ? y'a t'il des limitation à la fonction checksum ?
Checksum ne garantie pas l'unicité sur des chaînes très longues.
Mais vous pouvez quand même ce faire en ajoutant le double contrôle :
SELECT * FROM ( SELECT * FROM MaTable WHERE MonCheckSum = 5623131321 ) T WHERE nom = 'toto' AND prenom = 'marcel' AND ...
A +
Merci par avance ! Ch.
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
Fr
Bonjour,
Peut-être que un hashage MD5 en lieu et place du checksum ferai l'affaire... par contre cela est plus lourd à stocker et certaiement plus long à calculer qu'un checksum (à vérifier)
puis stocker le résultat de HashBytes('MD5', @s) dans une colonne varchar
"Christophe" wrote in message news:
bonjour,
j'ai une table avec des personnes, sur laquelle je dois comparer les champs suivants : nom prenom adresse3 code postal ville
la table comporte 1 million de lignes. Pour gagner du temps j'ai donc creer une champ integer. suivant
checksum( isnull(nom,'') + isnull(prenom,'') + isnull(adresse3,'') + isnull(CP,'') + isnull(ville,'') ) se qui me donne un integer bien plus simple et rapide à comparer. seulement voila j'ai plusieurs fois le meme numero pour des personnes qui n'ont rien à voir entre elle. bien sur cela me creer de grave problemes d'affectation.
est-ce que je suis parti dans la mauvaise direction ? qu'utiliseriez vous comme methode pour repondre à mon besoin ? y'a t'il des limitation à la fonction checksum ?
Merci par avance ! Ch.
Bonjour,
Peut-être que un hashage MD5 en lieu et place du checksum ferai l'affaire...
par contre cela est plus lourd à stocker et certaiement plus long à calculer
qu'un checksum (à vérifier)
puis stocker le résultat de HashBytes('MD5', @s) dans une colonne varchar
Fr@ncky
"Christophe" <christophe@digital16-9.com> wrote in message
news:86341544-E427-4036-A5E2-DDBD6ADD2964@microsoft.com...
bonjour,
j'ai une table avec des personnes, sur laquelle je dois comparer les
champs suivants :
nom
prenom
adresse3
code postal
ville
la table comporte 1 million de lignes.
Pour gagner du temps j'ai donc creer une champ integer.
suivant
checksum( isnull(nom,'') + isnull(prenom,'') + isnull(adresse3,'') +
isnull(CP,'') + isnull(ville,'') )
se qui me donne un integer bien plus simple et rapide à comparer.
seulement voila j'ai plusieurs fois le meme numero pour des personnes qui
n'ont rien à voir entre elle.
bien sur cela me creer de grave problemes d'affectation.
est-ce que je suis parti dans la mauvaise direction ?
qu'utiliseriez vous comme methode pour repondre à mon besoin ?
y'a t'il des limitation à la fonction checksum ?
Peut-être que un hashage MD5 en lieu et place du checksum ferai l'affaire... par contre cela est plus lourd à stocker et certaiement plus long à calculer qu'un checksum (à vérifier)
puis stocker le résultat de HashBytes('MD5', @s) dans une colonne varchar
"Christophe" wrote in message news:
bonjour,
j'ai une table avec des personnes, sur laquelle je dois comparer les champs suivants : nom prenom adresse3 code postal ville
la table comporte 1 million de lignes. Pour gagner du temps j'ai donc creer une champ integer. suivant
checksum( isnull(nom,'') + isnull(prenom,'') + isnull(adresse3,'') + isnull(CP,'') + isnull(ville,'') ) se qui me donne un integer bien plus simple et rapide à comparer. seulement voila j'ai plusieurs fois le meme numero pour des personnes qui n'ont rien à voir entre elle. bien sur cela me creer de grave problemes d'affectation.
est-ce que je suis parti dans la mauvaise direction ? qu'utiliseriez vous comme methode pour repondre à mon besoin ? y'a t'il des limitation à la fonction checksum ?
Merci par avance ! Ch.
Fred BROUARD
Christophe a écrit :
Merde c'est pas cool ce que tu me dis la, ca doit venir de la le probleme, ou j'ai des doublons de checksum alors que ces personnes non strictement rien à voir !
quelles autres methode je pourrais utiliser ? car le probleme c'est que confronter quelques milliers de ligne à plus d'un million ca prends quand meme un certain temps et j'aurais le cas tres prochainement pour des bases bien plus lourde ! 4 millions sur 20 millions !!
la requête que je vous ais donné va parfaitement fonctionner.
A +
cette solution m'avait bien plus.
"Fred BROUARD" a écrit dans le message de news:
Christophe a écrit :
bonjour,
j'ai une table avec des personnes, sur laquelle je dois comparer les champs suivants : nom prenom adresse3 code postal ville
la table comporte 1 million de lignes. Pour gagner du temps j'ai donc creer une champ integer. suivant
checksum( isnull(nom,'') + isnull(prenom,'') + isnull(adresse3,'') + isnull(CP,'') + isnull(ville,'') ) se qui me donne un integer bien plus simple et rapide à comparer. seulement voila j'ai plusieurs fois le meme numero pour des personnes qui n'ont rien à voir entre elle. bien sur cela me creer de grave problemes d'affectation.
est-ce que je suis parti dans la mauvaise direction ? qu'utiliseriez vous comme methode pour repondre à mon besoin ? y'a t'il des limitation à la fonction checksum ?
Checksum ne garantie pas l'unicité sur des chaînes très longues.
Mais vous pouvez quand même ce faire en ajoutant le double contrôle :
SELECT * FROM ( SELECT * FROM MaTable WHERE MonCheckSum = 5623131321 ) T WHERE nom = 'toto' AND prenom = 'marcel' AND ...
A +
Merci par avance ! Ch.
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
Christophe a écrit :
Merde c'est pas cool ce que tu me dis la, ca doit venir de la le probleme,
ou j'ai des doublons de checksum alors que ces personnes non strictement
rien à voir !
quelles autres methode je pourrais utiliser ? car le probleme c'est que
confronter quelques milliers de ligne à plus d'un million ca prends quand
meme un certain temps et j'aurais le cas tres prochainement pour des bases
bien plus lourde !
4 millions sur 20 millions !!
la requête que je vous ais donné va parfaitement fonctionner.
A +
cette solution m'avait bien plus.
"Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de
news:ulPr1OopHHA.960@TK2MSFTNGP03.phx.gbl...
Christophe a écrit :
bonjour,
j'ai une table avec des personnes, sur laquelle je dois comparer les
champs suivants :
nom
prenom
adresse3
code postal
ville
la table comporte 1 million de lignes.
Pour gagner du temps j'ai donc creer une champ integer.
suivant
checksum( isnull(nom,'') + isnull(prenom,'') + isnull(adresse3,'')
+ isnull(CP,'') + isnull(ville,'') )
se qui me donne un integer bien plus simple et rapide à comparer.
seulement voila j'ai plusieurs fois le meme numero pour des personnes
qui n'ont rien à voir entre elle.
bien sur cela me creer de grave problemes d'affectation.
est-ce que je suis parti dans la mauvaise direction ?
qu'utiliseriez vous comme methode pour repondre à mon besoin ?
y'a t'il des limitation à la fonction checksum ?
Checksum ne garantie pas l'unicité sur des chaînes très longues.
Mais vous pouvez quand même ce faire en ajoutant le double contrôle :
SELECT *
FROM
(
SELECT *
FROM MaTable
WHERE MonCheckSum = 5623131321
) T
WHERE nom = 'toto'
AND prenom = 'marcel'
AND ...
A +
Merci par avance !
Ch.
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Merde c'est pas cool ce que tu me dis la, ca doit venir de la le probleme, ou j'ai des doublons de checksum alors que ces personnes non strictement rien à voir !
quelles autres methode je pourrais utiliser ? car le probleme c'est que confronter quelques milliers de ligne à plus d'un million ca prends quand meme un certain temps et j'aurais le cas tres prochainement pour des bases bien plus lourde ! 4 millions sur 20 millions !!
la requête que je vous ais donné va parfaitement fonctionner.
A +
cette solution m'avait bien plus.
"Fred BROUARD" a écrit dans le message de news:
Christophe a écrit :
bonjour,
j'ai une table avec des personnes, sur laquelle je dois comparer les champs suivants : nom prenom adresse3 code postal ville
la table comporte 1 million de lignes. Pour gagner du temps j'ai donc creer une champ integer. suivant
checksum( isnull(nom,'') + isnull(prenom,'') + isnull(adresse3,'') + isnull(CP,'') + isnull(ville,'') ) se qui me donne un integer bien plus simple et rapide à comparer. seulement voila j'ai plusieurs fois le meme numero pour des personnes qui n'ont rien à voir entre elle. bien sur cela me creer de grave problemes d'affectation.
est-ce que je suis parti dans la mauvaise direction ? qu'utiliseriez vous comme methode pour repondre à mon besoin ? y'a t'il des limitation à la fonction checksum ?
Checksum ne garantie pas l'unicité sur des chaînes très longues.
Mais vous pouvez quand même ce faire en ajoutant le double contrôle :
SELECT * FROM ( SELECT * FROM MaTable WHERE MonCheckSum = 5623131321 ) T WHERE nom = 'toto' AND prenom = 'marcel' AND ...
A +
Merci par avance ! Ch.
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************