Donnerstag, Januar 28, 2016

Erforderliche Leseoperationen bei der Anlage eines Primary Keys

Ein recht überraschendes Verhalten bei der Constraint-Aktivierung spricht Jonathan Lewis in einem aktuellen Artikel an: wenn man einen mehrspaltigen Primary Key auf einer Tabelle anlegt, auf der zuvor für die betroffenen Spalten noch keine NOT NULL Constraints existierten, dann muss Oracle für jede einzelne Spalte einen Full Table Scan durchführen, um zu prüfen, dass die Spalten tatsächlich keine NULL-Werte enthalten. Anschließend ist ein weiterer Full Table Scan erforderlich, um die Daten für die Index-Anlage zu beschaffen. Sichtbar ist die Ressourcen-Nutzung über die Session-Statistics. Der Eindruck entsteht, dass hier ein effizienteres Vorgehen möglich wäre - aber die Implementierung ist an dieser Stelle offenbar seit vielen Oracle-Versionen die gleiche geblieben.

Keine Kommentare:

Kommentar veröffentlichen