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

Откуда:
Сообщений: 829
Здравствуйте!

Подскажите пожалуйста как кэшировать результат запроса, чтобы он не выполнялся повторно?
WITH Q AS (select * from Main1 union all select * from Main2) -- Нужно кэшировать этот результат Q.

Select * from Test
  left join Q ON Q.id = Test.Id
20 окт 16, 09:43    [19802879]     Ответить | Цитировать Сообщить модератору
 Re: Кэшировать результат запроса  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31983
Nechto
Подскажите пожалуйста как кэшировать результат запроса, чтобы он не выполнялся повторно?
Результаты запросов не кэшируются.

Можно сделать своё кэширование, сохраняя результат в постоянную таблицу.
20 окт 16, 09:49    [19802917]     Ответить | Цитировать Сообщить модератору
 Re: Кэшировать результат запроса  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Nechto,

судя по всему вопрос не к sql серверу
20 окт 16, 09:50    [19802925]     Ответить | Цитировать Сообщить модератору
 Re: Кэшировать результат запроса  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 28355
alexeyvg
Nechto
Подскажите пожалуйста как кэшировать результат запроса, чтобы он не выполнялся повторно?
Результаты запросов не кэшируются.

Можно сделать своё кэширование, сохраняя результат в постоянную таблицу.

Или во временную, или табличную переменную.

Может автору short-term cache нужен.
20 окт 16, 09:52    [19802943]     Ответить | Цитировать Сообщить модератору
 Re: Кэшировать результат запроса  [new]
Nechto
Member

Откуда:
Сообщений: 829
На оракле так делать можно, это я точно знаю. Можно выстраивать план оптимизации. Неужели на sql нельзя.
20 окт 16, 09:53    [19802950]     Ответить | Цитировать Сообщить модератору
 Re: Кэшировать результат запроса  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 28355
TaPaK
Nechto,

судя по всему вопрос не к sql серверу

Судя по тому, что потом нужен JOIN с закэшированными данными, то наверняка к SQL серверу.
20 окт 16, 09:53    [19802951]     Ответить | Цитировать Сообщить модератору
 Re: Кэшировать результат запроса  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 28355
Nechto
На оракле так делать можно, это я точно знаю. Можно выстраивать план оптимизации. Неужели на sql нельзя.

А как официально называется данный механизм в Oracle?
20 окт 16, 09:55    [19802958]     Ответить | Цитировать Сообщить модератору
 Re: Кэшировать результат запроса  [new]
Alibek B.
Member

Откуда:
Сообщений: 3955
https://docs.oracle.com/database/121/TGDBA/tune_result_cache.htm#TGDBA616
20 окт 16, 10:22    [19803129]     Ответить | Цитировать Сообщить модератору
 Re: Кэшировать результат запроса  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31983
Nechto
На оракле так делать можно, это я точно знаю. Можно выстраивать план оптимизации. Неужели на sql нельзя.
Выстраивать можно.
Но у вас же вопрос был не о плане, а о кешировании?
что бы после первого выполнения запроса содержимое "with" записывалось в память, и все последующие годы, до команды сброса кеша, или до перезагрузки сервера, бралось из памяти, а не из таблиц.
Вот такого механизма в сиквеле нет (не знаю, как в оракле).
20 окт 16, 10:41    [19803264]     Ответить | Цитировать Сообщить модератору
 Re: Кэшировать результат запроса  [new]
o-o
Guest
alexeyvg
что бы после первого выполнения запроса содержимое "with" записывалось в память, и все последующие годы, до команды сброса кеша, или до перезагрузки сервера, бралось из памяти, а не из таблиц.
Вот такого механизма в сиквеле нет (не знаю, как в оракле).

потому что не надо циклиться на CTE,
что есть не материализация, а "вью со scope = запрос".
а если записывать в таблицу, то можно и устроить "жизнь до рестарта",
это всемиворониным любимые memory optimized tables (SCHEMA_ONLY)
20 окт 16, 11:10    [19803490]     Ответить | Цитировать Сообщить модератору
 Re: Кэшировать результат запроса  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 28355
Alibek B.
https://docs.oracle.com/database/121/TGDBA/tune_result_cache.htm#TGDBA616

http://stackoverflow.com/questions/4095762/can-i-request-sql-server-to-cache-a-certain-result-set
20 окт 16, 21:06    [19806297]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить