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

select n1, n2   from [DB] where cf=1


над одной и той же таблицей имеет разницу во времени на порядки больше , если cf-вычисляемое поле. Скажите - как быть , как можно ускорить процесс для вычисляемых полей ?

спасибо.
24 апр 04, 01:43    [647687]     Ответить | Цитировать Сообщить модератору
 Re: Тормоза при выборке по вычисляемому полю ?  [new]
ChA
Member

Откуда: Москва
Сообщений: 11128
Проиндексировав... Обычно по вычисляемым полям не делают поисков,
так как это гарантировано приводит к полному сканированию таблицы
с вычислением для каждой строки.
24 апр 04, 02:40    [647697]     Ответить | Цитировать Сообщить модератору
 Re: Тормоза при выборке по вычисляемому полю ?  [new]
Siquel
Guest
Спасибо ..

вот только что вырубил запрос :
1/10 всего запроса по вычисляемому полю отрабатывала 4 часа , в то время как по статичным полям ВСЯ выборка в той же таблице - 15 минут ..

вот это то самое поле (выкусано с топика про "culumn search ", создание таблицы т2)

[last] AS ([dbo].[last]([n1], [n2], [n3], [n4])) 

то есть функция б возвращающая значение в вычисляемое поле.

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

(пока я построил 2 индекса - 1-ый по статичным полям n1..n4, и второй по вычисляемому полю
[cs] AS ([n1] + [n2] + [n3] + [n4])


если так делать нельзя - дайте знать почему ?)

еще раз спасибо
24 апр 04, 04:02    [647709]     Ответить | Цитировать Сообщить модератору
 Re: Тормоза при выборке по вычисляемому полю ?  [new]
ChA
Member

Откуда: Москва
Сообщений: 11128
Индекс по вычисляему полю можно сделать про определенных настройках
соединения и наличии кластерного уникального ключа. Подробнее в BOL
"indexes, on computed columns"
24 апр 04, 04:06    [647711]     Ответить | Цитировать Сообщить модератору
 Re: Тормоза при выборке по вычисляемому полю ?  [new]
ChA
Member

Откуда: Москва
Сообщений: 11128
Индексы по пользовательским функциям исключены
24 апр 04, 04:09    [647712]     Ответить | Цитировать Сообщить модератору
 Re: Тормоза при выборке по вычисляемому полю ?  [new]
Siquel
Guest
А как-то перед запуском запроса на выполнение можно оценить примерно время выполнение запроса ?

В Display estimated Excecution Plan я что-то ничего похожего не нашел ...
24 апр 04, 16:54    [648000]     Ответить | Цитировать Сообщить модератору
 Re: Тормоза при выборке по вычисляемому полю ?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Индексы по пользовательским функциям исключены
Разрешены такие индексы.
Нужно
1) чтобы функция была создана с WITH SCHEMABINDING
2) чтобы функция была determenistic.

А как-то перед запуском запроса на выполнение можно оценить примерно время выполнение запроса ?

Эта оценка не имеет смысла. Т.к. при реальном выполнении запроса время выполнения может оказаться _совершенно_ другим
24 апр 04, 21:45    [648106]     Ответить | Цитировать Сообщить модератору
 Re: Тормоза при выборке по вычисляемому полю ?  [new]
ChA
Member

Откуда: Москва
Сообщений: 11128
Glory

Разрешены такие индексы.

Теоретически - да, но практически столько ограничений, что мне легче
считать, что их нет
24 апр 04, 22:20    [648127]     Ответить | Цитировать Сообщить модератору
 Re: Тормоза при выборке по вычисляемому полю ?  [new]
Glory
Member

Откуда:
Сообщений: 104760
но практически столько ограничений,
Не больше чем для создания индекса по "простому" вычисляемому столбцу
24 апр 04, 22:48    [648133]     Ответить | Цитировать Сообщить модератору
 Re: Тормоза при выборке по вычисляемому полю ?  [new]
ChA
Member

Откуда: Москва
Сообщений: 11128
Во-во
24 апр 04, 22:56    [648137]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить