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

start [/forum/topic.php?fid=46&msg=32063231&tid=1819184]: |
0ms |
get settings: |
5ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
28ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
25ms |
get tp. blocked users: |
1ms |
| others: | 190ms |
| total: | 269ms |

| 0 / 0 |
