A quanto mi risulta, Query Optimizer in SQL Server (o qualsiasi altro RDBMS, in realtà) non è a conoscenza delle prestazioni dell'archiviazione sotto il database e prenderà decisioni come se tutto l'archiviazione abbia lo stesso costo. È accurato o è stata presa in considerazione una conoscenza delle prestazioni di archiviazione?
In un esempio totalmente inventato, supponiamo che le mie righe di tabella siano archiviate su un'unità SSD nella mia SAN con tempi di accesso istantanei, in cui i miei indici sono memorizzati su unità SAS estremamente sovraccariche, con conseguente saturazione del disco e code del disco costanti. Quando RDBMS genera il piano di esecuzione, è più probabile che favorisca una scansione della tabella rispetto a un'operazione sull'indice (o forse un indice scarno e ricerche di tabella associate, al contrario di un indice di copertura, perché è meno I / O sui dischi SAS)?
Ho il sospetto che la risposta sia un solido "non è una possibilità l'ottimizzatore che intelligente o addirittura consapevole delle prestazioni del disco", ma volevo solo vedere se qualcuno là fuori lo sa per certo. Sto usando SQL Server, ma sono interessato a qualsiasi sistema di database.