С MSDN :
PAGEIOLATCH_SH
Происходит, когда задача ожидает защелки для буфера, который находится в запросе I/O
. Запрос защелки находится в режиме совместного использования. Длительное ожидание может указывать на проблемы с дисковой подсистемой.
На практике это почти всегда происходит из-за большого сканирования больших таблиц. Это почти никогда не происходит в запросах, которые эффективно используют индексы.
Если ваш запрос такой:
Select * from <table> where <col1> = <value> order by <PrimaryKey>
, проверьте, что у вас есть составной индекс на (col1, col_primary_key)
.
Если у вас его нет, вам понадобится либо полный INDEX SCAN
, если выбран PRIMARY KEY
, либо SORT
, если выбран индекс col1
.
Они оба очень жесткие I/O
, потребляя операции с большими таблицами.