Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Почему не срабатывает индекс, если нет записей, удовлетворяющих условиям?  [new]
TJ001
Member

Откуда: от верблюда
Сообщений: 428
В sql2000 есть таблица t1 (несколько десятков млн строк) с кластерным индексом по числовому полю, плотность которого достаточно высока.
Когда делаешь выборку по существующему значению, то ответ приходит быстро, возвращается порядка 50тыс строк (на каждое значение в этом поле приходится примерно одинаковое число строк), план показывает, что выборка была по индексу.
Если сделать запрос по несуществующему значению, то задумывается на несколько минут, ничего не возвращает (естественно) и в плане сообщает что был скан. Обновление статистики не дает результатов.
Почему так происходит и как победить?
11 авг 16, 15:35    [19529928]     Ответить | Цитировать Сообщить модератору
 Re: Почему не срабатывает индекс, если нет записей, удовлетворяющих условиям?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37155
Сферические выборки в вакууме необходимо делать только шарообразными запросами. В остальных случаях тормозить будет.
11 авг 16, 15:37    [19529939]     Ответить | Цитировать Сообщить модератору
 Re: Почему не срабатывает индекс, если нет записей, удовлетворяющих условиям?  [new]
TJ001
Member

Откуда: от верблюда
Сообщений: 428
Гавриленко Сергей Алексеевич,

Содержательно, спасибо
11 авг 16, 15:38    [19529947]     Ответить | Цитировать Сообщить модератору
 Re: Почему не срабатывает индекс, если нет записей, удовлетворяющих условиям?  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
TJ001,

Добрый день.

Описание действий сервера своими словами не конструктивно. Лучше выкладывайте актуальные планы (один для известного, второй для неизвестного). Хотя у вас 2000 сервер, план видимо будет доступен только в текстовом виде, что уменьшает вероятность того, что кто-то будет в нем разбираться. Мне, например, глаза ломать не хочется, разве что план будет достаточно простой =)

По вашему вопросу, сразу закрадывается мысль, нет ли у вас там какого-нибудь TOP или запрос в if exists(...)? А может быть у вас запрос делается с параметром и сервер прослушивает его для каждого нового значения?

На все эти вопросы отвечают планы запроса. Без них можно только гадать и давать вам такие же абстрактные советы, каким является ваш абстрактный вопрос.
11 авг 16, 15:50    [19530024]     Ответить | Цитировать Сообщить модератору
 Re: Почему не срабатывает индекс, если нет записей, удовлетворяющих условиям?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37155
TJ001
Гавриленко Сергей Алексеевич,

Содержательно, спасибо
В моем ответе содержательности ровно столько же, сколько в вашем вопросе. Не за что.
11 авг 16, 15:53    [19530048]     Ответить | Цитировать Сообщить модератору
 Re: Почему не срабатывает индекс, если нет записей, удовлетворяющих условиям?  [new]
o-o
Guest
SomewhereSomehow
Лучше выкладывайте актуальные планы (один для известного, второй для неизвестного). Хотя у вас 2000 сервер, план видимо будет доступен только в текстовом виде, что уменьшает вероятность того, что кто-то будет в нем разбираться. Мне, например, глаза ломать не хочется, разве что план будет достаточно простой =)

если там одна таблица и то скан, то поиск, то картинкой вполне сойдет.
просто мышь навести на интересующий оператор и в таком виде заснять.

К сообщению приложен файл. Размер - 31Kb
11 авг 16, 16:15    [19530185]     Ответить | Цитировать Сообщить модератору
 Re: Почему не срабатывает индекс, если нет записей, удовлетворяющих условиям?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8353
TJ001,

поле преобразовать в not null - первое, что приходит в голову.
11 авг 16, 16:23    [19530237]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить