En vfp9 los varchar ocupan en disco su maxima extensión, la diferencia con un campo de caracteres es que cuando recuperas el dato, un campo de caracteres es retornado con la extensión completada con blancos y los varchar te devuelven solo la longitud de los datos guardados, sin completar con blancos al final.
En mysql, un campo varchar ocupa al menos 4 caracteres (este vacio o no).
Los sgbd guardan sus datos en nodos de x cantidad de caracteres (donde x depende de cada SGBD), dentro de esos nodos, acomodan tantos registros o partes de registros como corresponda por los datos contenidos (casi todos los SGBD guardan los datos memo, blob, etc. en archivos o areas aparte).
Los datos se acomodan en esos nodos de diferente forma, dependiendo del SGBD.
Por ejemplo en SQL Server, si tiene un indice de racimo (cluster), los datos se ubican en los nodos siguiendo el orden del indice cluster y no apilado al final.
Una de la ventaja de fox con sus tablas es que los archivos de datos, son planos con registros de longitud fija, por lo que permite acceso por número de registro, lo que a su vez puede, usandose apropiadamente, un tiempo de respuesta muy bueno.
Eso además permite que los indices, que apuntan a ese archivo plano, de acceso directo, sea muy efectivo accediendo por cualquier indice.
En cambio, en el caso de SQL Server, el indice cluster es superefeciente, pero los otros indices, apuntan al indice cluster, o sea que es un acceso en dos pasos.
Saludos: Miguel, La Pampa (RA)