Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / не заканчивается исполнение запроса на основе view / 6 сообщений из 6, страница 1 из 1
30.10.2002, 16:33:32
    #32063231
khoud
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не заканчивается исполнение запроса на основе view
Создается view вида "SELECT * FROM f_data()",
где f_data() - пользовательская функция, возвращающая Table, тоже вида "SELECT * FROM table", table-проиндексированная таблица.
Если строить запрос на основе view, индекс использоваться не будет?
Я столкнулась с такой проблемой: запрос с одним JOIN'ом
на основе view не заканчивает вычисления в течение долгого времени (в одной из начальных таблиц 1500 записей)
Подобная конструкция - таблица-функция-view- важна. Возможно, есть какое-то решение?
...
Рейтинг: 0 / 0
30.10.2002, 16:39:04
    #32063233
VVG_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не заканчивается исполнение запроса на основе view
Так вроде и должно быть. Функция же создает новую переменную типа table, куда сливает данные и которую возвращает. Дальнейшая работа ведется только с ней, и про индексы на первую таблицу можно забыть. А индексировать табличные переменные IMHO не представляется возможным.
...
Рейтинг: 0 / 0
30.10.2002, 18:03:47
    #32063304
Crimean
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не заканчивается исполнение запроса на основе view
declare @t table
(
id int primary key ,
flag int
)
вот и индексирование :)
и - работает, проверьте!
...
Рейтинг: 0 / 0
30.10.2002, 19:31:26
    #32063338
Garya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не заканчивается исполнение запроса на основе view
1. Для запроса SELECT * FROM table нет никакого смысла использовать какой-либо индекс.
2. Если для выполнения запроса, задействованного ВНУТРИ функции желательно использовать индекс, то он в любом случае будет использован.
3. Функции, возвращающие Table, могут быть двух видов - inline-функции и НЕ inline-функции. Inline-функция - это аналог параметризованного VIEW. По таким функциям строится совокупный план выполнения запроса. В частности, если внутри функции по select производится выборка ВСЕХ записей из таблицы, а в базовом запросе указано SELECT * FROM f_data() where ID=5, то даже внутри функции произойдет выборка ровно одной записи с использованием индекса (если он есть), а не полное сканирование таблицы.
...
Рейтинг: 0 / 0
31.10.2002, 12:16:22
    #32063525
khoud
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не заканчивается исполнение запроса на основе view
А если под WHERE стоит сложное условие в виде функции от поля, будут, видимо, просмотрены все записи?
...
Рейтинг: 0 / 0
31.10.2002, 13:47:45
    #32063584
Garya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не заканчивается исполнение запроса на основе view
>А если под WHERE стоит сложное условие в виде функции от поля, будут, видимо, просмотрены все записи?

Да
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / не заканчивается исполнение запроса на основе view / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]