PB à toute heure et à tout moment. (à parcourir avec modération)

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 01-07-2013 15:28:12

Shed  
Membre Geek
Date d'inscription: 06-01-2011
Messages: 62
Pépites: 260
Banque: 0

Durée d'un select en fonction du nombre de lignes

- Base de données utilisée et sa version: Oracle 11g
- Mode de connexion à la base de données: odbc

Hello les gens, voici deux questions purement théoriques:

1.
Je fais un select sur une table de ma DB, qui compte 100 000 lignes. Ce select est sensé me retourner une seule ligne et il dure 10ms.
Si le nombre de lignes augmente jusque 1 000 000, est ce que mon select va durer 100 ms?

Autrement dit, est ce que la durée d'un select est directement proportionnelle au nombre de lignes présentes dans la table? Ou moins que directement proportionnelle? Ou plus que directement proportionnelle?

2.
Si maintenant sur une même table, je fais un select sensé me retourner une seule ligne, est ce que celui-ci prendre 10x moins de temps que si je fais un IN (...,...,...) sensé me retourner 10 lignes?

Cela m'intéresse beaucoup, notamment pour faire des pronostics de performances.

Merci pour vos avis éclairés!


PS: la clé primaire à partir de laquelle je fais ma clause where est évidemment indexée.

PS2: la question qui tue: Si c'est une vue à la place d'une table, cela change-t-il quelque chose?

Hors ligne

 

#2 01-07-2013 15:43:28

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

Re: Durée d'un select en fonction du nombre de lignes

Salut,

Shed a écrit:

- Base de données utilisée et sa version: Oracle 11g
- Mode de connexion à la base de données: odbc

Elle est bien Ta Ferrari, dommage que tu l'as monté en pneux faits pour une deux chevaux...

Pour le reste... je pense pas qu'on pourra te faire de réponse simple et valable dans tous les cas à tes questions, ça dépends de tellement de choses, nottament du paramètrage de ta DB, voire même du paramétrage de ta table (partitionnée ? indexée ? etc.)

Par contre ce qu'il faut bien comprendre c'est la distinction entre le temps d'exécution de la requête par le moteur DB et le temps de transfert des infos entre le serveur DB et le Client (l'appli PB ici)

Tu peux avoir une requête multi table super compliquée n'utilisant pas d'indexs qui ne va te retourner qu'une seule ligne :
exécution requête : très long
transfert serveur - client : une seule ligne : très rapide

Comme tu peux avoir une requête toute simple qui va te ramener 1000 lignes (genre select all d'une table où y a 1000 lignes)
exécution requête : rapide
transfert serveur - client : une seule ligne : +  lent (1000 lignes à ramener)

tout ça pour dire que le nombre de lignes récupérées seul ne permets pas de dire si on aura le résultat affiché rapidement ou pas.

Au plus que tu vas moins vite au moins que tu finis plus tôt si tu veux...


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

#3 01-07-2013 16:04:28

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: Durée d'un select en fonction du nombre de lignes

my 2 cents : fais le test et tiens nous au courant 


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22