|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Inscription : décembre 2008 Messages : 82 ![]() |
Bonjour,
J'accède à ma table via un programme en java, et je fais ma requête sur la table en sql. Mon problème est que la table a près de 10M de lignes (..), donc que je ne peux pas la charger en une fois, ni faire une requête type select qui me retournerait toute la table. J'avais donc penser lire la table 100lignes par 100lignes, mais le mot clé LIMIT n'est pas accepté par l'AS400. Je fais donc un pour le moment, mais (logiquement), plus j'avance dans la table, plus c'est long. Existe t'il un moyen de faire autrement? Je ne peux pas me permettre de temporiser 10sec pour extraire des infos de la table. Merci d'avance, Bdloul |
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 668 ![]() |
Bonjour,
la question qu'il faut se poser serai plutôt : quel est l'intérêt de ramenet 10M de lignes dans votre applicatif ?? N'êtes vous pas en train d'essayer de faire un traitement batch ...? En java qui plus est ! Bref, pour répondre à votre question initiale, lisez cet article (qui doit marcher en V5r4+) : http://g-ernaelsten.developpez.com/tutoriels/dblimit/ |
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Inscription : décembre 2008 Messages : 82 ![]() |
C'est juste une question d'affichage. Je dois afficher le contenu de la table sur une page web, en utilisant les technos J2EE. Je me suis dit que j'allais faire une connexion sur l'as400 ou sont les tables dans mon code modèle et que j'allais afficher le contenu de la table 100lignes par 100lignes. Fin bref ça me semble le plus simple & le truc que tu m'as filé va me permettre de limiter le nombre de ressources utilisées.
Bref merci. |
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 668 ![]() |
Sinon regardez du côté de votre driver jdbc, il doit supporter ce genre de chose.
|
|
|
00
|
|
|
#5 |
|
Nouveau Membre du Club
![]() Inscription : décembre 2008 Messages : 82 ![]() |
Je récapitule, puisque je n'ai pas été très explicite la première fois.
Je fais une interface web entre l'user et une table sur un AS400. La table contient plusieurs M de lignes, mais je voudrais les prendre seulement 100 par 100 (vu que je les affiche que 100 par 100 => bouton next). J'ai essayé ce que vous m'avez donné en lien, mais je n'arrive pas à le mettre en place( Error : nombre de colonne incohérente). Mais j'ai néanmoins peur que ça me simplifie juste la vie, sans accélérer la requête. Mon maitre de stage m'a dit d'essayer un autre driver -> je ne comprends pas, et il revient dans qq jours. Serait il possible d'avoir une brève explication? Merci d'avance. Bdloul |
|
|
00
|
|
|
#6 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 668 ![]() |
Quelle est la requete que vous avez essayé ?
Certain driver jdbc supporte les offset .. après le code derrière est souvant merdique. |
|
|
00
|
|
|
#7 | ||
|
Nouveau Membre du Club
![]() Inscription : décembre 2008 Messages : 82 ![]() |
La requête :
Code :
|
||
|
|
00
|
|
|
#8 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 668 ![]() |
Euh... votre erreur est normale vous déclarez une table temporaire (with) qui possède 4 colonnes, et dans le sous-select vous en avez 5.
|
|
|
00
|
|
|
#9 |
|
Nouveau Membre du Club
![]() Inscription : décembre 2008 Messages : 82 ![]() |
Merci de ton aide, ça marche, mais comme je le craignais ça ne résout absolument pas le problème de lenteur (~5sec pour charger la page).
|
|
|
00
|
|
|
#10 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 668 ![]() |
votre colonne mmitno est indexée ?
Si oui, est-ce que le plan d'acces l'utilise ? (fonction explain de iseries navigator) |
|
|
00
|
|
|
#11 |
|
Nouveau Membre du Club
![]() Inscription : décembre 2008 Messages : 82 ![]() |
J'ai "résolu" le problème.
"Fetch first XXX rows" pour n'avoir que les XXX premiers résultats (j'incrémente à chaque <NEXT=>) & "FOR READ ONLY", qui accélère considérablement le temps de lecture de la table. J'ai mis aussi "OPTMIZE FOR XXX ROWS", mais je doute de sa pertinence ici. Merci de votre aide en tout cas. Bdloul |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com