Сообщение Re[16]: [SQL Server] Анализ всех запросов к таблице от 01.08.2015 11:09
Изменено 01.08.2015 11:17 Somescout
Здравствуйте, _ABC_, Вы писали:
_AB>В случае index seek как раз не будет последовательного чтения страниц. Там будет случайное чтение от root page до leaf page со всеми
_AB>необходимыми остановками. На эту операцию фрагментация фактически не влияет.
Разве? Index seek выполняется когда предикат индекса совпадает с предикатом запроса, т.е. index (a) и (where a between x and y) в этом случае находится первая страница диапазона и читается до последней. Хотя в более сложных случаях доступ будет более произвольным (index(a,b), where a>x and b<y), но в любом случае чтение идёт диапазонами строк: находим первую и последнюю строку соответствую условию и читаем всё между ними.
Кстати, index scan будет работать точно также, правда при этом обрабатываются и не соответствующие условию строки входящие в диапазон.
_AB>В случае index seek как раз не будет последовательного чтения страниц. Там будет случайное чтение от root page до leaf page со всеми
_AB>необходимыми остановками. На эту операцию фрагментация фактически не влияет.
Разве? Index seek выполняется когда предикат индекса совпадает с предикатом запроса, т.е. index (a) и (where a between x and y) в этом случае находится первая страница диапазона и читается до последней. Хотя в более сложных случаях доступ будет более произвольным (index(a,b), where a>x and b<y), но в любом случае чтение идёт диапазонами строк: находим первую и последнюю строку соответствую условию и читаем всё между ними.
Кстати, index scan будет работать точно также, правда при этом обрабатываются и не соответствующие условию строки входящие в диапазон.
Re[16]: [SQL Server] Анализ всех запросов к таблице
Здравствуйте, _ABC_, Вы писали:
_AB>В случае index seek как раз не будет последовательного чтения страниц. Там будет случайное чтение от root page до leaf page со всеми
_AB>необходимыми остановками. На эту операцию фрагментация фактически не влияет.
Разве? Index seek выполняется когда предикат индекса совпадает с предикатом запроса, т.е. index (a) и (where a between x and y) в этом случае находится первая страница диапазона и читается до последней. Хотя в более сложных случаях доступ будет более произвольным (index(a,b), where a>x and b<y), но в любом случае чтение идёт диапазонами строк: находим первую и последнюю строку соответствую условию и читаем всё между ними.
Кстати, index scan будет работать точно также, правда при этом обрабатываются и не соответствующие условию строки входящие в диапазон.
И во всех случаях влияние фрагментации будет зависеть от длинны диапазона и размера одной строки.
_AB>В случае index seek как раз не будет последовательного чтения страниц. Там будет случайное чтение от root page до leaf page со всеми
_AB>необходимыми остановками. На эту операцию фрагментация фактически не влияет.
Разве? Index seek выполняется когда предикат индекса совпадает с предикатом запроса, т.е. index (a) и (where a between x and y) в этом случае находится первая страница диапазона и читается до последней. Хотя в более сложных случаях доступ будет более произвольным (index(a,b), where a>x and b<y), но в любом случае чтение идёт диапазонами строк: находим первую и последнюю строку соответствую условию и читаем всё между ними.
Кстати, index scan будет работать точно также, правда при этом обрабатываются и не соответствующие условию строки входящие в диапазон.
И во всех случаях влияние фрагментации будет зависеть от длинны диапазона и размера одной строки.