Entradas

Mostrando las entradas con la etiqueta Oracle

To bind or not to bind: that is the question

Imagen
Tenemos un programa que hace en GeneXus:  for each       where ATT1=&Var1 .or. &Var1='TODOS'   //Los puntos en el or son para darle olor a viejo            where ATT2=&Var2 .or. &Var2='TODOS'          Msg('Cuantos registros tiene esta tabla!!!' +  Clave) endfor Esto va a generar una sentencia mas o menos asi: SELECT CLAVE, ATT1, ATT2 FROM TABLAGRANDE WHERE (ATT1= @AV6969VAR1 OR @Av6969Var1 ='TODOS') AND (ATT2= @AV6968VAR2 OR @AV6968VAR2 ='TODOS') ORDER BY CLAVE En la base de datos, las sentencia tiene una parte fija, y las variables, cambian en cada corrida, de form que el DBMS puede reutilizar la navegación y no necesita recompilar la sentencia, cuando cambian los valores de la variable. Esto deja a los DBA contentos.  Que inconvenientes trae esto? Generalmente estas sentencias, aparecen en la lista de sentencias que consumen mucho, pues los OR hacen que se consuman mas recursos que los necesarios.  Que opción tenemos para mejo...

Diferencia increible entre Oracle y SQLserver

Gabriel me mostró un problema con una webtransaction generada con .NET. Era algo muy sencillo y que funcionaba bien en SQL Server y mal con Oracle, pues no estaba funcionando correctamente cuando habia uno de los elementos de la clave C(2) que tenia 2 blancos. Hicimos la prueba sencilla create table tabla (Campo Char(2)) insert into tabla values(' ') -- Inserto un registro con dos blancos. Oracle 9i SQL Server 2000 select * from tabla where campo=' ' --dos blancos 1 registro seleccionado 1 registro seleccionado select * from tabla where campo=' ' --un blanco 1 registro seleccionado 1 registro seleccionado select * from tabla where campo='' --sin blancos 0 registro seleccionado 1 registro seleccionado Es ent...