44 Stimmen

Warum kann ich nicht einfach einen Index hinzufügen, der alle Spalten umfasst?

Ich habe eine Tabelle in der SQL Server-Datenbank, in der ich so schnell wie möglich Daten suchen und abrufen möchte. Es ist mir egal, wie lange das Einfügen in die Tabelle dauert, ich bin nur an der Geschwindigkeit interessiert, mit der ich Daten abrufen kann.

Das Problem ist, dass auf die Tabelle mit 20 oder mehr verschiedenen Arten von Abfragen zugegriffen wird. Das macht es zu einer mühsamen Aufgabe, einen Index hinzuzufügen, der speziell für jede Abfrage entwickelt wurde. Ich erwäge stattdessen, einfach einen Index hinzuzufügen, der ALLE Spalten der Tabelle umfasst. Das ist nichts, was man normalerweise in einem "guten" Datenbankdesign tun würde, also nehme ich an, dass es einen guten Grund gibt, warum ich es nicht tun sollte.

Kann mir jemand sagen, warum ich das nicht tun sollte?

UPDATE: Ich vergaß zu erwähnen, dass mir auch die Größe meiner Datenbank egal ist. Es ist OK, dass es bedeutet, dass meine Datenbank größer wird, als es nötig wäre

1voto

zerkms Punkte 239362

Ich erwäge, stattdessen einfach einen Index hinzuzufügen, der ALLE Spalten der Tabelle umfasst.

Das ist immer eine schlechte Idee. Indizes in Datenbanken sind kein Feenstaub, der auf magische Weise funktioniert. Sie müssen Analysieren Sie Ihre Abfragen und fügen Sie je nachdem, was und wie abgefragt wird, Indizes hinzu.

Es ist nicht so einfach wie "alles in den Index aufnehmen und ein Nickerchen machen".

0voto

ewanm89 Punkte 955

1) Größe, ein Index baut im Wesentlichen eine Kopie der Daten in dieser Spalte eine leicht durchsuchbare Struktur, wie ein binärer Baum (ich weiß nicht, SQL Server specifcs). 2) Sie erwähnten die Geschwindigkeit, Indexstrukturen sind langsamer zu ergänzen.

-1voto

Albin Sunnanbo Punkte 45302

Dieser Index wäre einfach identisch mit Ihrer Tabelle (möglicherweise in einer anderen Reihenfolge sortiert).
Es wird Ihre Abfragen nicht beschleunigen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X