FAQ - Preguntas frecuentes sobre Oracle - ¿Porqué una conversión en el WHERE desactiva?

5 - ¿Porqué una conversión en el WHERE desactiva?

[editar]
Monografía creado por José Manuel. Extraido de: http://www.lawebdejm.com
30 de Noviembre de 1999
Cuando se hace una consulta y la condición de filtro incluya una función de conversión (TO_NUMBER, TO_DATE, etc.), esta se debe aplicar siempre que se pueda sobre un valor constante en vez de sobre una columna.
Por ejemplo, la siguiente consulta no utilizará ningún indice sobre <COLUMNA_VARCHAR>


SELECT <COLUMNAS>
FROM <TABLA>
WHERE TO_NUMBER(<COLUMNA_VARCHAR>) = 2;


Sin embargo, la siguiente consulta sí que utiliza los índices sobre la <COLUMNA_VARCHAR>


SELECT <COLUMNAS>
FROM <TABLA>
WHERE <COLUMNA_VARCHAR> = TO_CHAR(2);


Las conversiones implícitas siguen unas normas parecidas, pero teniendo en cuenta que Oracle aplicará la función de conversión sobre el valor alfanumérico:
Por ejemplo, esta consulta:


SELECT <COLUMNAS>
FROM <TABLA>
WHERE <COLUMNA_VARCHAR> = 2;


será interpretada del siguiente modo:


SELECT <COLUMNAS>
FROM <TABLA>
WHERE TO_NUMBER(<COLUMNA_VARCHAR>) = 2;


Por lo tanto, desactivará los índices. Sin embargo, esta otra consulta:


SELECT <COLUMNAS>
FROM <TABLA>
WHERE <COLUMNA_NUMBER> = '2';


será interpretada del siguiente modo:


SELECT <COLUMNAS>
FROM <TABLA>
WHERE <COLUMNA_VARCHAR> = TO_NUMBER('2');


Por lo que no desactivará los índices, ya que la función se aplica sobre el valor constante y no sobre la columna.
[editar]

Sé el primero en opinar


Monografías relacionados con 'FAQ - Preguntas frecuentes sobre Oracle'

Lista de FAQs que he ido recopilando durante los tres años que trabajé con Oracle,... Más »
Las Pequeñas y Medianas empresas (PYME’s) necesitan incorporar tecnología a sus estrategias de negocio para... Más »

Autor y licencia de 'FAQ - Preguntas frecuentes sobre Oracle'


Monografía de José Manuel. Extraido de: http://www.lawebdejm.com CopyLeft
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.