akretschmer
Datenbank-Guru
- Beiträge
- 10.367
Hallo,
Indexe helfen, Abfragen zu beschleunigen. Bekannt. Einen Index zu erstellen kann aber bei sehr großen Tabellen auch mal sehr lange dauern. Unter Umständen Stunden. Und in dieser Zeit ist richtig Last auf der DB - es muß ja jeder Datensatz gelesen werden, um den Index erstellen zu können. Und wenn man Pech hat, ist der Index nicht in der Lage, die Abfrage zu beschleunigen, aber das weiß man erst hinterher.
In diese Lücke springen hypotetische Indexe. Hier wird der Index nicht wirklich erstellt, sondern nur in den Katalogen ein Index eingetragen, der gar nicht existiert. Was das soll? Man kann solch einen Index sehr schnell und ohne Impakt auf die laufende DB erstellen und ein EXPLAIN der Abfrage durchführen, um zu sehen, ob der Index denn überhaupt sinnvoll wäre. Die Änderung der Kataloge gilt nur für die aktuelle Session und der Index ist auch nur für Explain 'sichtbar', er wird also bei realen Abfragen auf die Tabelle auch in dieser Session nicht verwendet - er ist ja nicht da.
Das ist nicht Teil der offiziellen Distribution, aber eine schöne Extension, wie ich finde. Einer aus der Community hat darüber ausführlich gebloggt: select * from depesz; » Blog Archive » Hypothetical indexes
Indexe helfen, Abfragen zu beschleunigen. Bekannt. Einen Index zu erstellen kann aber bei sehr großen Tabellen auch mal sehr lange dauern. Unter Umständen Stunden. Und in dieser Zeit ist richtig Last auf der DB - es muß ja jeder Datensatz gelesen werden, um den Index erstellen zu können. Und wenn man Pech hat, ist der Index nicht in der Lage, die Abfrage zu beschleunigen, aber das weiß man erst hinterher.
In diese Lücke springen hypotetische Indexe. Hier wird der Index nicht wirklich erstellt, sondern nur in den Katalogen ein Index eingetragen, der gar nicht existiert. Was das soll? Man kann solch einen Index sehr schnell und ohne Impakt auf die laufende DB erstellen und ein EXPLAIN der Abfrage durchführen, um zu sehen, ob der Index denn überhaupt sinnvoll wäre. Die Änderung der Kataloge gilt nur für die aktuelle Session und der Index ist auch nur für Explain 'sichtbar', er wird also bei realen Abfragen auf die Tabelle auch in dieser Session nicht verwendet - er ist ja nicht da.
Das ist nicht Teil der offiziellen Distribution, aber eine schöne Extension, wie ich finde. Einer aus der Community hat darüber ausführlich gebloggt: select * from depesz; » Blog Archive » Hypothetical indexes