ta odpowiedź jest oparta na mojej osobistej opinii. Do odpowiedzi używam logiki matematycznej
drugie pytanie dotyczyło granicy, na której się zatrzymać, Najpierw zróbmy jakieś obliczenia matematyczne, załóżmy, że mamy N wierszy z L polami w tabeli, jeśli zaindeksujemy wszystkie pola, otrzymamy L nowych tabel indeksowych, w których każda tabela będzie sortowana w w sensowny sposób dane pola indeksu, na pierwszy rzut oka, jeśli twój stół ma wagę W, stanie się W * 2 (1 tera stanie się 2 tera), jeśli masz 100 dużych tabel (pracowałem już w projekcie, w którym numer tabeli był około 1800 stolików) zmarnujesz 100 razy więcej miejsca (100 tera), to jest dalekie od rozsądku.
Jeśli zastosujemy indeksy we wszystkich tabelach, będziemy musieli pomyśleć o aktualizacjach indeksów, w których jedna aktualizacja wyzwoli aktualizację wszystkich indeksów to jest wybór wszystkich nieuporządkowanych odpowiedników w czasie
z tego wnioskuję, że masz w tym scenariuszu, że jeśli stracisz ten czas, lepiej stracić go w selekcji lub aktualizacji, ponieważ jeśli wybierzesz pole, które nie jest indeksowane, nie uruchomisz kolejnego wyboru na wszystkich polach, które są nie indeksowane
co indeksować?
klucze obce: jest koniecznością w oparciu o
klucz główny: nie jestem jeszcze tego pewien, może być, jeśli ktoś przeczyta to, może pomóc w tej sprawie
inne pola: pierwsza naturalna odpowiedź to połowa pozostałych fildów dlaczego: jeśli powinieneś indeksować więcej, nie jesteś daleko od najlepszej odpowiedzi, jeśli powinieneś indeksować mniej, nie jesteś również daleko, ponieważ wiemy, że żaden indeks nie jest zły i wszystkie zindeksowane jest również zły.
z tych 3 punktów mogę wywnioskować, że jeśli mamy pola L złożone z K kluczy, limit powinien być gdzieś blisko ((L-K)/2)+K
mniej więcej o L / 10
ta odpowiedź jest oparta na mojej logice i osobistych cenach