Bonjour,
je vais avoir besoin d'une table d'environ 600 colonnes. Quelles incidences peut avoir un nombre de colonnes aussi important sur les performances de mes UPDATE, INSERT et SELECT?
merci,
Romu
Bonjour,
je vais avoir besoin d'une table d'environ 600 colonnes. Quelles incidences peut avoir un nombre de colonnes aussi important sur les performances de mes UPDATE, INSERT et SELECT?
merci,
Romu
en soi, pas grand chose, mais ce grand nombre de colonne n'est-il pas symptomatique d'un défaut de conception ?![]()
Tout dépend du type et de la taille des colonnes mais de facon générale, plus le nombre de colonnes est grand, plus le risque de chainage de ligne s'accroit (ligne stockée dans plusieurs blocs). Donc impact sur la performance.
Par ailleurs, bien que la limite maxi du nombre de colonnes soit de 1000, oracle separe une ligne en groupe de 256 colonnes (une ligne de 300 colonnes par ex. est gerée internement en deux lignes). La tendance a chainage est donc encore accrue.
ça fait parti des vérités qu'on sait, sans jamais savoir pourquoi
Mais le chainage me semble être un élément de réponse tout à fait crédible.![]()
La modélisation de la table est gérée par le progiciel sur lequel je travaille, je ne peux donc pas revoir la modélisation de la base. Après effectivement c'est plutôt mon utilisation du soft qui est à revoir...
90% des colonnes sont des NUMBER. Mes SELECT se feront sur les 10 premières colonnes de la table puis potentiellement sur une trentaine d'autres.
Je me dis qu'avec quelques centaines de milliers de lignes le problème de performance ne devrait pas trop se poser.
Si je comprends bien en fait comme je suis sûr d'avoir plus de 256 colonnes (et donc une ligne sur 2 blocs) , je peux aller à 500 colonnes sans impacter les perfomances
Merci en tout cas pour vos réponses!
La doc oracle decrit au moins le partitionement en 255 colonnes:
http://download-west.oracle.com/docs...01_02intro.htmTables
Tables are the basic unit of data storage in an Oracle database. Database tables hold all user-accessible data. Each table has columns and rows. Oracle stores each row of a database table containing data for less than 256 columns as one or more row pieces. A table that has an employee database, for example, can have a column called employee number, and each row in that column is an employee's number.
Le chainage est une possible conséquence logique. J'avais par ailleurs lus des docs sur metalink mais je ne retrouve plus le document.
Et puis sinon y'a qu'a tester.
@romu92: calcule la taille maximale de ta ligne et regarde si elle tient dans un bloc. Si oui, alors tu ne devrais pas avoir d'impact sur la performance.
Partager