Obecně platí, že indexy jsou užitečné pouze v případě, že jsou nad selektivní pole. To znamená, že počet dokumentů, které mají určitou hodnotu, je malý vzhledem k celkovému počtu dokumentů.
To, co znamená „malý“, se liší podle souboru dat a dotazu. 1% selektivita je docela bezpečná při rozhodování, zda má index smysl. Pokud určitá hodnota existuje například v 10 % dokumentů, může být skenování tabulky efektivnější než použití indexu nad příslušným polem.
S ohledem na to budou některá z vašich polí selektivní a někteří nebudou. Mám například podezření, že filtrování podle „OK“ nebude příliš selektivní. Z úvah o indexování můžete vyloučit neselektivní pole – pokud někdo chce všechny objednávky, které jsou „v pořádku“ bez dalších podmínek, skončí skenováním tabulky. Pokud někdo chce objednávky, které jsou "OK" a mají jiné podmínky, použije se jakýkoli index, který se vztahuje na jiné podmínky.
Nyní, když vám zbývají selektivní (nebo alespoň trochu selektivní) pole, zvažte, jaké dotazy jsou oblíbené a selektivní. Takovou kombinací by možná byla například značka+typ. Můžete přidat složené indexy, které odpovídají oblíbeným dotazům, u kterých očekáváte, že budou selektivní.
Co se stane, když někdo filtruje pouze podle značky? To může být selektivní nebo ne v závislosti na datech. Pokud již máte složený index pro značku+typ, ponechali byste na databázi, aby určila, zda je efektivnější splnit dotaz pouze na značku prostřednictvím indexu značka+typ nebo pomocí skenování kolekce.
Tímto způsobem pokračujte s dalšími oblíbenými dotazy a poli.