En un fichero desordenado, también denominado fichero heap, los registros se colocan en el fichero en el orden en que se van insertando. Cuando llega un nuevo registro, se inserta en el último bloque del fichero; si el fichero está lleno, se le añade más espacio. Esta organización hace que la inserción sea muy eficiente. Sin embargo, cuando se trata de acceder a un registro del fichero, es necesario realizar una búsqueda lineal recorriendo todos los bloques del fichero uno tras otro, hasta encontrar el registro deseado. Esto hace que las búsquedas de registros en los ficheros desordenados sean muy lentas.
Si lo que se desea es obtener todos los registros del fichero presentándolos en un determinado orden (según el valor de alguno de sus campos), es necesario realizar una ordenación externa si el fichero completo no cabe en memoria principal: se van leyendo los registros, se escriben de forma ordenada en un fichero temporal en disco y, finalmente, se accede a este último fichero para leer los registros una vez ordenados.
Para eliminar un registro es necesario traer a memoria principal el bloque en el que se encuentra, después se marca el registro como borrado y, por último, se vuelve a escribir el bloque en el mismo lugar en que se encontraba. El espacio que ocupaba el registro borrado no se reutiliza, lo que hace que empeoren las prestaciones, por lo que, cada cierto tiempo, habrá que realizar una reorganización del fichero para recuperar este espacio.
Para modificar un registro también es necesario traerlo a memoria principal y actualizarlo. Si el registro modificado cabe en el bloque en el que se encontraba, se reescribe el bloque en su sitio. Si el registro modificado ha aumentado su tamaño de modo que no cabe en el bloque, hay que borrar el registro original y añadir el registro modificado al final del fichero.
Los ficheros desordenados son los más adecuados cuando se trata de cargar grandes cantidades de datos, ya que la inserción es muy eficiente al no tener que realizarse ningún cálculo para determinar la posición que debe ocupar el registro en el fichero.