Soweit ich weiß, ist sich der Abfrageoptimierer in SQL Server (oder einem anderen RDBMS) der Leistung des Speichers unter der Datenbank nicht bewusst und trifft Entscheidungen, als ob der gesamte Speicher die gleichen Kosten verursacht. Ist das richtig oder gibt es Kenntnisse über die Speicherleistung, die berücksichtigt werden?
Nehmen wir in einem völlig erfundenen Beispiel an, dass meine Tabellenzeilen auf einem SSD-Laufwerk in meinem SAN mit sofortigen Zugriffszeiten gespeichert werden, wobei meine Indizes auf SAS-Laufwerken gespeichert werden, die extrem überlastet sind, was zu Festplattensättigung und konstanten Festplattenwarteschlangen führt. Wenn das RDBMS den Ausführungsplan generiert, ist es dann wahrscheinlicher, dass ein Tabellenscan bevorzugt wird als eine Indexoperation (oder möglicherweise ein dünner Index und zugehörige Tabellensuchen im Gegensatz zu einem abdeckenden Index, da auf den SAS-Datenträgern weniger E / A vorhanden sind)?
Ich vermute, die Antwort ist solide: "Keine Chance ist der Optimierer, der intelligent ist oder sich sogar der Festplattenleistung bewusst ist", aber ich wollte nur sehen, ob jemand da draußen es sicher weiß. Ich verwende SQL Server, interessiere mich aber für jedes Datenbanksystem.