Насколько я понимаю, оптимизатор запросов в SQL Server (или любой другой СУБД, на самом деле) не знает о производительности хранилища под базой данных и будет принимать решения, как если бы все хранилище имело одинаковую стоимость. Это точно, или есть какие-то знания о производительности хранилища, которые принимаются во внимание?
В полностью надуманном примере предположим, что строки моей таблицы хранятся на SSD-диске в моей SAN с мгновенным временем доступа, где мои индексы хранятся на жестких дисках SAS, которые сильно перегружены, что приводит к насыщению диска и постоянным дисковым очередям. Когда СУБД генерирует план выполнения, больше ли предпочтение отдается сканированию таблицы, а не операции индекса (или, возможно, индексу сужения и связанным поискам таблицы, в отличие от индекса покрытия, потому что на дисках SAS меньше операций ввода-вывода)?
Я подозреваю, что ответ на этот вопрос твердый: «Не случайно, умный оптимизатор или даже знает о производительности диска», но я просто хотел посмотреть, знает ли кто-нибудь наверняка. Я использую SQL Server, но меня интересует любая система баз данных.