Já teve muita pergunta sobre isso por aqui.
Vejam um teste simples que acabei de fazer com SSD.
A velocidade de cópia foi 1MB com arquivos pequenos, e 90MB com um arquivo único de 20GB.
A cópia é feita por blocos.
Em arquivos pequenos, o bloco é um arquivo, e em arquivos grandes, o bloco é o tamanho máximo.
Em DBF, o bloco é um único registro.
Em SQL, o bloco é o tamanho máximo, ou melhor, depende da consulta SQL.
Vamos supor que vai ler 1.000 registros, com o tamanho de 500 bytes cada, o que dá 500mb.
E apenas pra efeito de aprendizado, vamos supor que cada bloco demore 1 segundo, o mesmo das imagens do SSD.
Ler um registro por vez no DBF, demoraria 500 segundos, 1MB x 500
Ler um registro por vez no SQL, demoraria 500 segundos, 1MB x 500
Já ler tudo de uma vez no SQL, demoraria 6 segundos, 90MB x 6
usando DBF fica lento, usando SQL igual DBF fica lento, usando SQL como deve ser fica rápido.
Tem rede 10MB, 100MB, 1000MB, tem internet mais rápida e mais lenta.
Tirar o máximo de proveito disso, com DBF não dá, e nem usando SQL igual DBF, porque a quantidade de informação por vez fica limitada.
SQL, neste caso, está simbolizando uma aplicação cliente/servidor. Pode ser MySQL, SQL Server, etc., e geralmente trabalhamos através de comandos SQL.
É isso que confunde, a gente pensa que com DBF, por trazer um pouco de cada vez a rede vai ficar livre e rápida, e não vai haver desperdÃcio, e na prática é o contrário.
Seria igual usar um caminhão pra carregar 50.000 tijolos.
Se carregar um tijolo de cada vez, o caminhão vai poder correr bastante 120km/hora, mas vai demorar pra terminar o serviço, vai ter que fazer 50.000 viagens.
Se carregar todos os tijolos de uma vez, o caminhão pode até ter que andar mais devagar digamos 40kmb/hora, mas vai trazer tudo de uma vez, o que dá um resultado mais rápido.
1 viagem contra 50.000 viagens...1 viagem que demora 3 vezes mais, se considerar 1 segundo pra cada viagem, um de cada vez demora 50.000 segundos, e tudo junto demora 3 segundos.
Isso também confunde: o DBF começar mais rápido, não significa que vai terminar mais rápido.
Por isso a gente fala que pra trabalhar com SQL precisa esquecer o DBF, porque temos que avaliar de forma diferente cada um deles.
No DBF avaliamos Ãndices prontos, pra agilizar a pesquisa/resultado, acessar o mÃnimo de registros possÃvel.
No SQL... isso também, mas avaliamos como trazer mais resultado com menos pesquisas ao servidor.
Achei que essa cópia seria um bom exemplo pra tirar dúvidas de quem ainda tem.