2011-11-26 30 views
5

Si consulto mi DataBase (Oracle) con Índice único en varias columnas, ¿habrá alguna diferencia de rendimiento si cambio una de las columnas de VARCHAR2 a NÚMERO?
Si lo hay, ¿es significativo?Diferencia de rendimiento entre VARCHAR2 a NUMBER

(Es varchar2 porque necesito '0' al principio pero puede cambiarlo en la capa de presentación en mi aplicación)

+0

necesita definir 'significativo'. NÚMEROS será más rápido. – Randy

+0

La diferencia entre VARCHAR2 y NUMBER no es tan significativa (se almacenan de manera similar). El ORDEN de columnas en el índice único de varias columnas puede importar mucho. – ibre5041

Respuesta

3

Más personas conocedoras que yo me dicen que en Oracle la diferencia de rendimiento entre number y varchar2 depende completamente de sus datos, ya que internamente tienen representaciones muy similares. Véase el siguiente:

https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:2669498700346402356

sino también consultar la sección "Formato numérico interno" de:

http://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT012

Si, por ejemplo, sus datos varchar era en realidad caracteres individuales (tales como 'S', 'N') entonces probablemente estarás mejor con varchar que con numérico. Si tienes menos de 100 códigos, pero los equivalentes de cadena tienen 8 caracteres, entonces probablemente estarás mejor con números que varchar.

+0

Gracias, aunque tarde para la fiesta, el enlace con Tom valió la pena ... :) – gdoron

4

Sí, debería ser más rápido de usar NÚMERO. Si le da un aumento significativo dependerá de sus datos, índices y consultas. Si tienes problemas de rendimiento, es poco probable que sea la solución mágica.

+0

¿Existe alguna medida para saber cuánta influencia habrá? digamos en porcentajes. No tengo problemas de rendimiento, pero no quiero tener un día ... – gdoron

+0

Y si esa columna no es una del índice único y no voy a filtrar por él, solo obtendré su valor, ¿será? aún disminuir el rendimiento? – gdoron

+5

@gdoron Casi siempre es mejor guardar números como números y texto como texto. Usar el tipo NÚMERO debería ser más eficiente (en términos de espacio y rendimiento) y evitar algunos problemas potenciales (por ejemplo, advertencia temprana si accidentalmente intentas almacenar algo que no es un número en esa columna). Si solo tiene una pequeña cantidad de datos, probablemente no notará mucha diferencia en el rendimiento haciendo este cambio, pero si es barato hacer y probar, entonces probablemente sea lo correcto. –

Cuestiones relacionadas