据我了解,SQL Server(或其他任何RDBMS)中的查询优化器并不了解数据库下面存储的性能,并且会像所有存储具有相同的成本一样做出决策。这是否准确,或者是否考虑了一些有关存储性能的知识?
在一个完全人为的示例中,假设我的表行以瞬时访问时间存储在SAN中的SSD驱动器上,其中索引存储在极度超载的SAS驱动器上,从而导致磁盘饱和和恒定的磁盘队列。当RDBMS生成执行计划时,是否比索引操作更可能支持表扫描(或者可能是瘦索引和关联的表查找,而不是覆盖索引,因为它在SAS磁盘上的IO更少)?
我怀疑答案是肯定的,“优化器不会聪明甚至不会意识到磁盘性能”,但是我只是想看看那里是否有人肯定知道。我正在使用SQL Server,但对任何数据库系统都感兴趣。