Oracle : n premières lignes

Résolu/Fermé
Tibo-K3 Messages postés 18 Date d'inscription jeudi 22 juillet 2010 Statut Membre Dernière intervention 20 août 2013 - 23 mars 2011 à 10:59
Tibo-K3 Messages postés 18 Date d'inscription jeudi 22 juillet 2010 Statut Membre Dernière intervention 20 août 2013 - 23 mars 2011 à 14:57
Bonjour à tous,

Je travaille sous Oracle 11g et pour faire des tests de perf, j'aimerai faire une requête mais sur les N premiers champs d'une table.

Actuellement, je connais la clause WHERE ROWNUM <= 10000 mais cette clause limite le nombre de lignes retournées à 10000, et non pas d'appliquer la requête sur les 10000 premiers champs de la requête.

Alors, ça se trouve ma demande n'a aucun sens car "n premiers champs" d'une base ne veut peut être rien dire, car ce n'est pas ordonné. Mais je tiens à préciser que l'ordre et les champs sélectionnés n'ont que peu d'importance, le résultat m'importe peu, je suis juste interessé par le temps de réponse.

Merci par avance

3 réponses

Sur mysql, il y a le mot clé LIMIT (select * from pouet limit 10; -> retour des 10 premiers enregistrements) mais je sais pas si il existe sous oracle...
0
Tibo-K3 Messages postés 18 Date d'inscription jeudi 22 juillet 2010 Statut Membre Dernière intervention 20 août 2013 3
23 mars 2011 à 11:14
Oui, mais comme marqué dans mon sujet, ce n'est pas ce qui m'intresse. Je ne veux pas retourner les 10 premiers enregistrements, je veux qu'il REQUÊTE sur les 10 premiers champs !

Si j'ai la table

NOM  PRENOM
AAA     Michel
BBB    Bernard
CCC   Thierry
DDD    Paul
AAA    Marie
BBB    Anne
AAA   Marie-Chantale
BBB    Clara



Je veux un SELECT * FROM TABLE WHERE NOM = 'AAA' AND "sur les 2 premiers champs" qui revient à faire SELECT * FROM TABLE WHERE NOM = 'AAA' juste sur la partie de la table :

NOM    PRENOM
AAA     Michel
BBB    Bernard


et donc retourner seulement

AAA     Michel



Alors que ROWLIMIT (Oracle) ou LIMIT (MYSQL) retournera

AAA     Michel
AAA    Marie
0
Tibo-K3 Messages postés 18 Date d'inscription jeudi 22 juillet 2010 Statut Membre Dernière intervention 20 août 2013 3
23 mars 2011 à 14:57
J'ai trouvé la réponse (enfin grâce à un de mes collègues). C'était ROWNUM, mais utilisé indirectement :

select 'COLONNES' from (select * from 'TABLE' where ROWNUM <= 1000) where'CONDITION' 
0