Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите разобраться с зхапросом  [new]
Piter Griffin
Guest
Здравсвуйте. такая штука:
есть вьюхи view1 и view2.

create view view1 as
select ID,Code, SomeOtherID, Name1, Name2 from ...

create view view2 as
select ID, Name from view1 where SomeOtherID<>7

дальше самое интересное:

select * from view1 order by ID desc, Code desc (3000 rows, 2 sec)
select top 10 * from view1 order by ID desc, Code desc (1 sec)

select * from view2 order by ID desc, Code desc (3000, 2 sec)
select top 10 * from view2 order by ID desc, Code desc (30 sec)

не пойму в чем дело. если вторая вьюха по сути ничего ине делает. откуда такое дикое время может быть?

ID,Code - первичный кластерный ключ в таблице (сортирован по убыванию)
SomeOtherID поле из той же таблицы откуда берутся ID и Code и по нему сделан индекс
30 сен 09, 13:46    [7724627]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с зхапросом  [new]
Piter Griffin
Guest
читать так, а то вопросы будут, что можл поля то и не тянешь:
create view view2 as
select ID, Code, Name1 from view1 where SomeOtherID<>7
30 сен 09, 13:48    [7724640]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с зхапросом  [new]
Glory
Member

Откуда:
Сообщений: 104760
Piter Griffin


не пойму в чем дело. если вторая вьюха по сути ничего ине делает. откуда такое дикое время может быть?

Как это она ничего не делает ? Она добавляет условие отбора where SomeOtherID<>7
30 сен 09, 13:50    [7724652]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с зхапросом  [new]
Piter Griffin
Guest
автор
Она добавляет условие отбора where SomeOtherID<>7

И?
поле то индексированное. всего строк 3000. как мне кажется отсчитать 10 строк по кластерному индексу от такого набора должно занимать меньше времени чем полминуты
30 сен 09, 14:18    [7724819]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с зхапросом  [new]
Glory
Member

Откуда:
Сообщений: 104760
Piter Griffin
автор
Она добавляет условие отбора where SomeOtherID<>7

И?
поле то индексированное. всего строк 3000. как мне кажется отсчитать 10 строк по кластерному индексу от такого набора должно занимать меньше времени чем полминуты

- Что И ? По-вашему, сервер должен игнорировать фильтры, которые вы ему задаете в where ?
- А что "кажется" плану выполнения ? И какое отношение к кластерному индексу имеет SomeOtherID<>7 ? И что за "второй" набор ? Вы наверное думаете, что сервер выполняет действия согласно тому, как вы "вложили" представления одно в другое ?
30 сен 09, 14:22    [7724836]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить