Der Umfang der Indexierung und die Grenze, zu viel zu tun, hängt von vielen Faktoren ab. Bei kleinen Tabellen wie Ihrer Tabelle "Kategorien" möchten oder brauchen Sie normalerweise keinen Index, und dies kann die Leistung beeinträchtigen. Der Grund dafür ist, dass E/A (d. h. Zeit) benötigt wird, um einen Index zu lesen, und dann mehr E/A und Zeit, um die Datensätze abzurufen, die den übereinstimmenden Zeilen zugeordnet sind. Eine Ausnahme ist, wenn Sie nur die im Index enthaltenen Spalten abfragen.
In Ihrem Beispiel rufen Sie alle Spalten mit nur 22 Zeilen ab, und es kann schneller sein, nur einen Tabellenscan durchzuführen und diese zu sortieren, anstatt den Index zu verwenden. Der Optimierer kann/sollte dies tun und den Index ignorieren. Wenn das der Fall ist, nimmt der Index nur Platz ein, ohne dass es einen Nutzen hat. Wenn häufig auf Ihre "Kategorien"-Tabelle zugegriffen wird, sollten Sie in Betracht ziehen, sie im Speicher zu fixieren, damit der DB-Server darauf zugreifen kann, ohne ständig auf die Festplatte wechseln zu müssen.
Beim Hinzufügen von Indizes müssen Sie den Speicherplatz, die Abfrageleistung und die Leistung beim Aktualisieren und Einfügen in die Tabellen ausgleichen. Sie können mit mehr Indizes für Tabellen auskommen, die statisch sind und sich nicht viel ändern, im Gegensatz zu Tabellen mit Millionen von Aktualisierungen pro Tag. An diesem Punkt werden Sie die Auswirkungen der Indexpflege spüren. Was jedoch in Ihrer Umgebung akzeptabel ist, ist und kann nur von Ihnen und Ihrer Organisation bestimmt werden.
Stellen Sie bei Ihrer Analyse sicher, dass Sie Ihre Tabellen- und Indexstatistiken generieren/aktualisieren, damit Sie sich auf genaue Berechnungen verlassen können.