Database Reference
In-Depth Information
idée reçue, composer sa base avec plus de tables ayant peu de colonnes rendra meilleures
les performances de vos requêtes.
2. Une clé primaire artiicielle est préférable à une clé métier (sémantique).
En choisissant le numéro d'immatriculation d'une voiture, qui vous dit qu'à la création
de l'enregistrement, l'information sera connue ou que cette valeur n'évoluera pas dans
le temps (entraînant des effets de bord très coûteux). La clé métier est en général plus
volumineuse qu'une simple colonne NUMBER . L'idéal, c'est de déinir une clé primaire
artiicielle et de disposer aussi d'une clé métier (contrainte UNIQUE ).
3. Ne codez jamais (à part dans vos tests ou démonstrations), une requête du type «  SELECT
* … », cela pour les trois raisons principales suivantes :
Moins il y a de données qui circulent sur le réseau, plus les temps de réponse sont courts.
Il est donc préférable d'indiquer dans la liste des colonnes uniquement celles qui sont
nécessaires.
Allégez la charge du transformateur de requêtes en lui évitant de rechercher les informa-
tions dans les tables système pour déduire la liste de toutes les colonnes et les privilèges
associés.
Allez-vous interdire implicitement que vos tables évoluent en termes de structure ? Ajouter
ou supprimer une colonne risque de rendre le code inopérant à tout endroit où cette
instruction se trouvera.
4. Évitez si possible d'utiliser des curseurs dans vos transactions.
Les curseurs imposent une programmation itérative (où les données sont traitées ligne
par ligne comme avec un simple ichier) et non ensembliste. Un SGBD est optimisé pour
traiter de manière ensembliste les données avec SQL. Depuis la version SQL:1999, la
récursivité est prise en charge et SQL devient un langage complet (au sens de la machine
de Turing) où tout traitement peut être théoriquement programmé à l'aide de requêtes.
5. Écourtez la durée de vos transactions et programmez côté serveur (procédures cata-
loguées).
Une transaction nécessite d'accéder souvent exclusivement aux données et des verrous
sont mis en œuvre automatiquement. Les verrous induisent des temps d'attente pour les
utilisateurs concurrents. Si votre code n'est pas optimisé ou s'il s'exécute du côté du client,
la contention devient inévitable.
6. Utilisez le SQL dynamique pour écrire des requêtes simples.
Le fait d'écrire une instruction avec du SQL dynamique évite au transformateur de
requêtes un certain nombre de tâches et permet la réutilisation du plan d'exécution.
7. Paramétrez la bonne collation.
Une collation sert à gérer la manière dont les chaînes de caractères, constituant les
données de la base, vont se comporter face aux opérateurs de comparaisons et à l'ordon-
nancement des données (tri). La gestion des majuscules/minuscules, accents, ligatures
(par exemple, cœur), etc. doit être prévue.
Search WWH ::




Custom Search