2010-12-10 20 views
10

Tengo una tabla en una base de datos de Oracle con 15 campos. Esta tabla tenía 3500000 inserciones. Los borré todos.Ejecución de consulta lenta en una tabla vacía. (después de eliminar una gran cantidad de insertos)

delete 
from table 

Después de eso, cada vez que ejecutar una instrucción de selección
puedo obtener una respuesta muy lenta (7 seg) a pesar de que la tabla está vacía. Recibo una respuesta normal solo en el caso de que busco de acuerdo con un campo indexado.

¿Por qué?

Respuesta

7

Como dice Gritem, es necesario comprender alta marcas de agua, etc.

Si no desea truncate la mesa ahora (ya que los datos fresca se ha insertado), utilice alter table xyz shrink space documentados here de 10g

-3

En sql, cuando desee eliminar completamente una tabla, debe usar truncar en lugar de eliminar. Digamos que tiene su tabla con 3,5 millones de filas y hay un índice (identificador único) en una columna de bigint que se incrementa para cada fila. Truncar la tabla borrará completamente la tabla y restablecerá el índice a 0. Eliminar no borrará el índice y continuará en 3.500.001 cuando se inserte el siguiente registro. Truncar también es mucho más rápido que eliminar. Lea los artículos a continuación para comprender las diferencias.

Lea este artículo Read this article que explica la diferencia entre truncar y eliminar. Hay momentos para usar cada uno. Here es otro artículo desde el punto de vista de Oracle.

+2

-1 para llamar a un índice un 'identificador único', mencionando índices cuando la pregunta no, hablando de 'bigint' en una pregunta de Oracle, y de alguna manera aceptando su respuesta –

+0

Las tres respuestas me satisfacen. Acepté esta respuesta porque me hizo entender más claramente lo que pedí y me dio 2 enlaces de artículos para verla con más detalle. Los revisé a todos y encontré la respuesta más completa que las otras. –

Cuestiones relacionadas