Ohne nähere Details zu kennen, ist es schwer zu sagen, warum der SQL-Optimizer eine bestimmte Entscheidung trifft. Bei diesem Beispiel wäre es hilfreich zu wissen, ob die Spalte NR eventuell einen (eindeutigen) Schlüssel darstellt, und wie sich die Werte innerhalb der Spalte NR verteilen. Außerdem könnte mit einfließen, über welches Interface das SQL-Statement abgesetzt wird (interaktives SQL, ODBC, embedded SQL), weil die Frage interessant sein kann, ob für "First I/O" oder für "All I/O" optimiert wird.

Grundsätzlich kann man wohl vermuten, daß bei einer Abfrage WHERE NR > 50 mehr Sätze zurückgegeben werden als bei einer Abfrage WHERE NR = 50, und das könnte die unterschiedliche Entscheidung des Optimizers erklären. Ein Table-Scan geht zwar bei einer relativ kleinen Tabelle schneller, kann aber bei wiederholtem Aufruf, wachsender Tabellengröße und kleiner Ergebnismenge negative Auswirkungen auf das Paging-Verhalten haben.

Mit freundlichen Grüßen,
Christian Bartels.