|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Nicolas Ingénieur développement logiciels Inscription : août 2011 Messages : 2 ![]() |
Bonjour à tous,Je viens de commencer à développer sur DB2. Par contre je travaille sur un serveur Windows 2008 R2 (sous Visual Studio 2010), et la base de données DB2 est installée sur un serveur Windows 2003 R2. Je vous énonce mon problème.J'ai une table qui fait 103 champs et ma clé primaire fait 14 champs. (Oui ce n'est pas très optimisé mais "Ordre du chef de Projet") Juste une requête "SELECT * FROM <ma_table>" et le temps d'exécution dépasse les 10 secondes. Merci pour vos infos. Cordialement, NB. Autres infos : -> la clé formée est un ensemble de champs de type VARCHAR(50). -> les autres champs sont de type LONG VARCHAR; JE NE SUIS PAS EN MESURE DE VOUS ENVOYER MA TABLE : Secret Pro. |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
votre
Doit surement vous générer un flux de retour important (Lecture complete de la table + renvoi de toutes les données + affichage dans votre client). Conseils : Eviter de selectionner toutes vos colonnes (*) si vous le pouvez (Mais bon avec 103 colonnes, je dois bien admettre que ca ne doit pas etre facile), limitez vos résultats par des clauses restrictives, indexez correctement les colonnes. Bon courage
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
00
|
|
|
#3 |
|
Membre chevronné
![]() Guillaume VENTREz/OS Technical Leader Inscription : décembre 2006 Messages : 514 ![]() |
SELECT * sans prédicat ?
Je pense que tu n'as pas besoin ramener toutes les colonnes et toutes les lignes de ta table. Nommes les colonnes utiles dans le select et rajoute une clause where indexée, ce sera déjà un bon début [EDIT] duplicate avec @Yannika bzh .
__________________
★★ Documentation Mainframe par Guillaume Ventre ★★ |
|
00
|
|
|
#4 |
|
Invité de passage
![]() Nicolas Ingénieur développement logiciels Inscription : août 2011 Messages : 2 ![]() |
Je suis obligé de renvoyer toutes mes colonnes.
Dans mon code je les utilise toutes donc .... Oui c'est une chose barbare mais bon. J'ai trouvé une solution en laissant ma clé dans une table (avec clé primaire un ID auto-incrémenté) et dans une autre tous mes champs. C'est beaucoup plus rapide au traitement. Merci pour vos réponses. |
|
|
00
|
|
|
#5 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 638 ![]() |
j'vois pas bien le rapport là oO
Votre volumétrie entre les 2 tables n'as pas changé, et une pk c'est une contrainte d'unicité qui est surement indexée (je ne connais pas assez db2 LUW pour avoir un avis net).... Bref par contre dans votre table en question, n'avez-vous pas des redondances de données (ceci peut alterer énormément les perfs ...)? Qu'est-ce qui justifie une clef primaire de 14 colonnes ? |
|
|
00
|
|
|
#6 |
|
Nouveau Membre du Club
![]() IT Developer JAVA Senior Inscription : juin 2004 Messages : 118 ![]() |
Tu peux peut être essayé de faire un "bulk load" :
1 - 1er filtre int[] ids = select ID from bigtable where..... 2 - Bulk load select * from bigtable where id in (...ids...) |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com