Ако нямате абсолютно никакви данни за проблема си, сте принудени да направите оценка.
Общата форма на тази формула е обяснена в коментарите:
- ако използваме само една ключова колона (
x
) на индекс с много колони (сc
колони), получавамеa
редове (1% от общите редове). Така че заx=1
, резултатът еa
по дефиниция. - ако знаем стойността за всяка ключова колона от многоколонов индекс, получаваме броя на редовете на цял ключ (
b
); така че заx=c
, получавамеb
редове (което е 1 или 10 ) по дефиниция. - между (ако използваме ключови стойности за повече от 1 ключова колона, но не всички), за всяка допълнителна известна ключова стойност, можем да изключим някои допълнителни редове:имаме
a-b
редове, които няма да принадлежат на случая, в който знаем пълно ключ (който ще имаb
редове) и по дефиниция те трябва да бъдат изключени пропорционално на съотношението на използваемите ключови колони ((x-1)/(c-1)
). -1
в(x-1)/(c-1)
е просто смяна (можете просто да използвате различни имена на променливи), тъй като трябва да преброим само допълнителните колони, ноc
иx
е броят, включително първата колона. (В времеви серии бихте извикали параметъра за първата колонаt=0
и-1
прави точно това).
Така в заключение получаваме a - (a-b) * (x-1)/(c-1)
(a
за първата ключова колона минус редовете, които пропорционално изключваме). Това е (ако трансформирате малко този израз) точно дадената формула. Бърза проверка за здравина:За x=1
(x-1=0
), вторият член е 0 и получаваме a
, както е определено от първото условие; за x=c
, получаваме a-(a-b)=b
както е определено от второто условие.
Не е неразумно да направите този анзац, използвайки тези предположения, но вероятно можете да намерите различна формула, която има толкова смисъл. Въпреки това да се твърди, че е по-добре, би било по-трудна задача.
След това е въпросът за избор на стойности (b=10
и 1%
в такъв случай). Очевидно можете да изберете всяка стойност. За да направите това без никакви надеждни данни, с изключение на интуитивно усещане, има концепция, наречена оценка на Ферми :
По принцип избирате само порядъка на магнитите (1, 1000000, 1/100) за вашите входни параметри и получавате разумен порядък на величината за вашия резултат.
И така, колко реда очаквате да покрие неуникален ключ? Това е повече от 1, иначе бихте го направили уникален ключ, но дали е по-скоро 2, 10 или 100? 10 вероятно е добро предположение (то обхваща стойност от около 3 до 30 в тази оценка). Така че, въпреки че тези числа биха могли да дойдат от 2-годишно световно проучване относно разпределението на ключовете, приблизителните стойности в степените на 10 обикновено се извличат по този начин. Ако искате да сте абсолютно сигурни, попитайте разработчика.
И задължителният xkcd за този вид теми:Какво-ако? Нарисувайте Земята