Принудительный Table scan

lustig

Добрый день!Подскажите пожалуйста как заставить оптимизатор использовать table scan при выполнении банального select .. from .. . Для таблицы есть первичный ключ и другие индексы. Сейчас выполняется сканирование кластерного индекса. Спасибо.ЗЫ: Версия сервера: 2000 сп4
9 ответов

lustig

Добрый день!Подскажите пожалуйста как заставить оптимизатор использовать table scan при выполнении банального select .. from .. . Для таблицы есть первичный ключ и другие индексы. Сейчас выполняется сканирование кластерного индекса. Спасибо.ЗЫ: Версия сервера: 2000 сп4
Удалить кластерный индекс.


lustig

lustig,Кластерный индекс это и есть сама таблица,более подробно об этом тут ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.en/s10de_0evalplan/html/26b28045-c3c2-465a-b564-bf2189e93fdc.htm


lustig

Что-то я не понял, зачем это могло автору понадобиться


lustig

Ясно, спасибо.


lustig

Зачем: есть не саспект база, в которой аллокэйшн эррор.
I/O error (bad page ID) detected during read at offset ... in file ... .
DBCC с опцией исправления не может их исправить.Можно ли как-то считать таблицу частично (с живых страниц)?


lustig

Зачем: есть не саспект база, в которой аллокэйшн эррор.
I/O error (bad page ID) detected during read at offset ... in file ... .
DBCC с опцией исправления не может их исправить.Можно ли как-то считать таблицу частично (с живых страниц)?
Кластерный индекс - это и есть живые страницы. Можно из бэкапа базу восстанавливать, можно делать новую таблицу и вытягивать в нее все данные, что сможете достать. Можно сочетать оба способа.


lustig

можно делать новую таблицу и вытягивать в нее все данные, что сможете достать
А как можно потянуть только не битые страницы? Дело в том, что у меня есть таблицы любой запрос к которым оканчивается I/O error, хотя по логам дбцц там есть "живые" страницы.


lustig

можно делать новую таблицу и вытягивать в нее все данные, что сможете достать
А как можно потянуть только не битые страницы? Дело в том, что у меня есть таблицы любой запрос к которым оканчивается I/O error, хотя по логам дбцц там есть "живые" страницы.
Читаем по 1, 10, 100, 1000 записей по кластерному индексу, пока не сбойнет. Дальше ищем условие, когда перестает сбоить. Повторяем до конца таблицы.


lustig

Понял, спасибо.Сбило с толку, что на первых записях вылетало, решил, что уже ничего не прочитает, ан нет есть место, с которого читает.