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

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


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