Ако нямате абсолютно никакви данни за проблема си, сте принудени да направите оценка.
Общата форма на тази формула е обяснена в коментарите:
- ако използваме само една ключова колона (
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 за този вид теми:Какво-ако? Нарисувайте Земята