Se você não tem absolutamente nenhum dado sobre o seu problema, você é forçado a fazer uma estimativa.
A forma geral dessa fórmula é explicada nos comentários:
- se usarmos apenas uma coluna-chave (
x
) de um índice de várias colunas (comc
colunas), obtemosa
linhas (1% do total de linhas). Portanto, parax=1
, o resultado éa
por definição. - se soubermos o valor de cada coluna-chave de um índice de várias colunas, obteremos o número de linhas por chave inteira (
b
); então parax=c
, obtemosb
linhas (que é 1 ou 10 ) por definição. - entre (se usarmos valores-chave para mais de 1 coluna-chave, mas não para todas), para cada valor-chave conhecido adicional, podemos excluir algumas linhas adicionais:temos
a-b
linhas que não pertencerão ao caso em que conhecemos nosso completo chave (que teriab
linhas) e, por definição, eles devem ser excluídos proporcionalmente à proporção de colunas-chave utilizáveis ((x-1)/(c-1)
). - O
-1
em(x-1)/(c-1)
é apenas um deslocamento (você pode usar nomes de variáveis diferentes), pois só precisamos contar os adicionais colunas, masc
ex
é a contagem incluindo a primeira coluna. (Em uma série temporal, você chamaria o parâmetro para a primeira colunat=0
, e o-1
faz exatamente isso).
Então, em conclusão, obtemos
a - (a-b) * (x-1)/(c-1)
(a
para a primeira coluna chave menos as linhas que excluímos proporcionalmente). Esta é (se você transformar um pouco essa expressão) exatamente a fórmula dada. Uma rápida verificação de sanidade:para x=1
(x-1=0
), o segundo termo é 0 e obtemos a
, conforme definido pela primeira condição; para x=c
, obtemos a-(a-b)=b
como definido pela segunda condição. Não é irracional fazer esse ansatz usando essas suposições, mas você provavelmente pode encontrar uma fórmula diferente que faça tanto sentido. Argumentar que é melhor seria uma tarefa mais difícil.
Depois, há a questão de escolher os valores (
b=10
e 1%
nesse caso). Obviamente, você pode escolher qualquer valor. Para fazer isso sem nenhum dado confiável, exceto uma intuição, existe um conceito chamado estimativa Fermi :Você basicamente escolhe apenas a ordem de magnitude (1, 1000000, 1/100) para seus parâmetros de entrada e obtém uma ordem de magnitude razoável para seu resultado.
Então, quantas linhas você espera que uma chave não exclusiva cubra? É mais de 1, caso contrário você faria uma chave única, mas é mais como 2, 10 ou 100? 10 é provavelmente um bom palpite (abrange um valor de cerca de 3 a 30 nessa estimativa). Portanto, embora esses números possam ter vindo de uma pesquisa mundial de 2 anos sobre distribuição de chaves, os valores estimados em potências de 10 geralmente são derivados dessa maneira. Se você quiser ter certeza absoluta, pergunte ao desenvolvedor.
E o xkcd obrigatório para este tipo de tópicos:E se? Pinte a Terra