"Mejor" depende de cuál sea su objetivo.
Las dos formas principales de almacenar imágenes cargadas por el usuario son colocar el contenido binario en la base de datos como un BLOB o almacenar las imágenes en el disco en algún lugar y colocar una entrada en la base de datos que indique qué imagen pertenece a dónde.
Colocar las imágenes en la base de datos tiene la ventaja de no requerir ningún tipo de permisos del sistema de archivos en el servidor web y elimina cualquier tipo de problema de sincronización si está sirviendo el sitio desde varios servidores web. Sin embargo, con el tiempo hace que su base de datos sea enorme, y si no diseña sus tablas correctamente, puede matar absolutamente su rendimiento y escalabilidad.
Almacenar las imágenes como archivo en el sistema de archivos tiene la ventaja adicional de hacer que la recuperación sea extremadamente rápida y eficiente, ya que los servidores web son muy buenos para servir archivos estáticos.
Editado para agregar
Si decide almacenar el contenido del archivo en la base de datos, absolutamente no lo coloque en una tabla a la que se deba acceder rápidamente. Si, por ejemplo, tiene una tabla de "usuarios" que se busca en casi todas las vistas de página, entonces esa tabla no el lugar para poner el contenido de su archivo. En su lugar, cree una tabla separada de "imágenes" o "archivos" que contenga el archivo y la metainformación relacionada.
Poner muchos bytes por fila en una tabla hace que trabajar con ella sea muy lento. No quieres ese tipo de cosas en las mesas que tienen un uso intensivo.