OVH Cloud OVH Cloud

petite question avec ado.net

3 réponses
Avatar
alain duhamel
bonjour,

j'ai une table avec 50 millions de lignes
le champ qui m'interesse est un champ "nom" texte varchar
256

mon programme doit faire des recherches ou des ajouts
de "nom" dans cette table

si j'ajoute, il faut que j'evite les doublons.
pour ce faire, le mieux est 1) de mettre un index unique
sur le champs qui provoquera une erreur en cas d'ajout
d'un doublon ou 2) faire une recherche avant?

sur ce genre de table tres grande, est ce qu'il y a un
type d'index particulier a utiliser? est ce qu'il vaut
mieux diviser la table en tables + petites ou chacune
correspondrait a une lettre de l'alphabet par exemple...
d'une facon generale, est ce qu'il y a une facon
d'optimiser ca lorsque la base est sur un seul PC.

3 réponses

Avatar
Fred BROUARD
dans tous les cas ajouter un index !

En effet la chercher avant sans index se fera en parcourant oute la table...

Donc, la contrainte d'unicité qui provoque la pose de l'index est la meilleure
des choses.

A +

--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************

alain duhamel a écrit:
bonjour,

j'ai une table avec 50 millions de lignes
le champ qui m'interesse est un champ "nom" texte varchar
256

mon programme doit faire des recherches ou des ajouts
de "nom" dans cette table

si j'ajoute, il faut que j'evite les doublons.
pour ce faire, le mieux est 1) de mettre un index unique
sur le champs qui provoquera une erreur en cas d'ajout
d'un doublon ou 2) faire une recherche avant?

sur ce genre de table tres grande, est ce qu'il y a un
type d'index particulier a utiliser? est ce qu'il vaut
mieux diviser la table en tables + petites ou chacune
correspondrait a une lettre de l'alphabet par exemple...
d'une facon generale, est ce qu'il y a une facon
d'optimiser ca lorsque la base est sur un seul PC.











Avatar
merci et si j'ajoute un enregistrement en doublon

le mieux c'est de le faire et d'intercepter l'erreur

ou alors de faire dabord une recherche pour savoir
si il existe deja dans la table?

c quoi le + mieux des deux?


-----Message d'origine-----
dans tous les cas ajouter un index !

En effet la chercher avant sans index se fera en


parcourant oute la table...

Donc, la contrainte d'unicité qui provoque la pose de


l'index est la meilleure
des choses.

A +

--
Frédéric BROUARD, MVP SQL Server. Expert SQL /


spécialiste Delphi, web
Livre SQL - col. Référence :


http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros :


http://sqlpro.developpez.com
************************ www.datasapiens.com


*************************

alain duhamel a écrit:
bonjour,

j'ai une table avec 50 millions de lignes
le champ qui m'interesse est un champ "nom" texte




varchar
256

mon programme doit faire des recherches ou des ajouts
de "nom" dans cette table

si j'ajoute, il faut que j'evite les doublons.
pour ce faire, le mieux est 1) de mettre un index




unique
sur le champs qui provoquera une erreur en cas d'ajout
d'un doublon ou 2) faire une recherche avant?

sur ce genre de table tres grande, est ce qu'il y a un
type d'index particulier a utiliser? est ce qu'il vaut
mieux diviser la table en tables + petites ou chacune
correspondrait a une lettre de l'alphabet par exemple...
d'une facon generale, est ce qu'il y a une facon
d'optimiser ca lorsque la base est sur un seul PC.












.



Avatar
lionelp
Bonjour,

faites l'insertion si erreur alors la gérer de manière appropriée
ou bien (dans le cas insert ou update)
faire une mise à jour si pas de ligne affectée faire l'insertion

Dans les 2 cas la transaction qui encapsule ce traitement ne sera pas
rollbackée.

Et surtout, mettre un index unique.

Cordialement,
LionelP

"" wrote:

merci et si j'ajoute un enregistrement en doublon

le mieux c'est de le faire et d'intercepter l'erreur

ou alors de faire dabord une recherche pour savoir
si il existe deja dans la table?

c quoi le + mieux des deux?


>-----Message d'origine-----
>dans tous les cas ajouter un index !
>
>En effet la chercher avant sans index se fera en
parcourant oute la table...
>
>Donc, la contrainte d'unicité qui provoque la pose de
l'index est la meilleure
>des choses.
>
>A +
>
>--
>Frédéric BROUARD, MVP SQL Server. Expert SQL /
spécialiste Delphi, web
>Livre SQL - col. Référence :
http://sqlpro.developpez.com/bookSQL.html
>Le site du SQL, pour débutants et pros :
http://sqlpro.developpez.com
>************************ www.datasapiens.com
*************************
>
>alain duhamel a écrit:
>> bonjour,
>>
>> j'ai une table avec 50 millions de lignes
>> le champ qui m'interesse est un champ "nom" texte
varchar
>> 256
>>
>> mon programme doit faire des recherches ou des ajouts
>> de "nom" dans cette table
>>
>> si j'ajoute, il faut que j'evite les doublons.
>> pour ce faire, le mieux est 1) de mettre un index
unique
>> sur le champs qui provoquera une erreur en cas d'ajout
>> d'un doublon ou 2) faire une recherche avant?
>>
>> sur ce genre de table tres grande, est ce qu'il y a un
>> type d'index particulier a utiliser? est ce qu'il vaut
>> mieux diviser la table en tables + petites ou chacune
>> correspondrait a une lettre de l'alphabet par exemple...
>> d'une facon generale, est ce qu'il y a une facon
>> d'optimiser ca lorsque la base est sur un seul PC.
>>
>>
>>
>>
>>
>>
>>
>>
>>
>
>.
>