Google Website Translator Gadget

miércoles, 23 de julio de 2014

Oracle: Optimització SELECT amb LIKE, UPPER i PrepareStatement

www.oracle.com

Optimització SELECT, LIKE, UPPER, PrepareStatement

Quan comences a treballar en un projecte, es bó anar anotant totes aquelles millores que poden ser incloses a la següent versió.
Una de les més habituals es l'optimització de les sentències d'accés a BB.DD. (i possiblement de tot el disseny de la BB.DD), que si no poden ser optimitzades en una primera instància, caldrà revaluar-les a posteriori.

Al següent enllaç he trobat informació força interessant sobre una sèrie de punts a tenir en compte per a diverses BB.DD. com Oracle, MySQL, SQL Server.
PasExemple
Crear la sentència amb UPPER
SELECT first_name, last_name, phone_number
FROM employees
WHERE UPPER(last_name) = UPPER('Rincewind')
Crear un índex sobre el camp amb UPPER
FBI - Function Based Index
CREATE INDEX emp_up_name
ON employees (UPPER(last_name));
Coordinar amb el Database Manager la actualització de les estadístiques (DBMS_STATS)Per defecte els FBI no s'utilitzen per al càlcul del execution plan.
Consulta a Oracle algunes altres advertències com, per exemple, incidències amb les funcions.Oracle Database cannot convert data in all cases, even when conversion is explicitly requested.
En el cas de PrepareStatement es important tenir en compte:
- El ? ha de estar sense cometes.
- Les cometes s'afegeixen al assignar la variable

sql_inst="SELECT * FROM C01001 WHERE UPPER(DESCRIPTION) LIKE ? ";
...
stmt.setString(1, "%"+Bean.getDescription().toUpperCase()+"%");

Nota: Per al cas de SQLServer, el procediment difereix una mica, consulltar l' article complert per a obtenir més informació.



Enllaços relacionats:




No hay comentarios:

Publicar un comentario