nov.
15
2007
0

SQL: Bones pràctiques (Vol 1)

Fa uns dies que a la feina m'he dedicat a revisar sentències d'una sèrie de funcions que tinc compilades en un package d'Oracle.

Les funcions funcionen correctament i fan el que toca però no n'hi ha prou que les coses funcionin bé, també cal fer-ho de forma óptima, reduïnt el cost de cada sentència al mínim possible.

Aixíq ue he volgut fer un petit recopilatori de normés BÀSIQUES de bones pràctiques de SQL per Oracle:

– Mostrar tots els usuaris que cobren 25.000 euros anuals a partir d'un camp que ens diu quin es el sou mensual: 

Malament:

Select Nom From Usuaris Where Sou_menusal*12=25000

Bé:

Select Nom From Usuaris Where Sou_mensual=25000/12

Nota: Si apliques alguna funció sobre el camp que vols filtrar impossibilites que la base de dades pugi utilitzar un possible índex. Aixpò també inclou males pràctiques com fer UPPER(camp), etc.

 

– Suposem que tenim un camp que pot pendre els valors 0 i 1 i volem filtrar segons el que marca:

Malament: 

Select Nom From Usuaris Where Check<>1

Bé:

Select Nom From Usuaris Where Check=0

Nota: Les desigualtats no utilitzen els índexs, les igualtats sí! Per tant utilitzar sempre una igualtat abans que una desigualtat.

 

– Volem ajuntar els registres de dues sentències diferents i no tenim duplicats:

Malament:

Select Nom From Usuaris1 Union Select Nom From Usuaris2

Bé:

Select Nom From Usuaris1 Union all Select Nom From Usuaris2

Nota: El Union torna totes les files diferents, el union all totes les fileres. per tant si no hi ha duplicats el union all te un millor rendiment.

Written by in: Frikades |

Powered by WordPress | Theme: Aeros 2.0 by TheBuckmaker.com

Aneu a la barra d'eines