Вопросы с тегом «cte»

Сокращение от общего выражения таблицы. Временный, многократно используемый подзапрос, который может быть рекурсивным.

174
В чем разница между CTE и Temp Table?

В чем разница между общим выражением таблицы (CTE) и временной таблицей? И когда я должен использовать один над другим? КТР WITH cte (Column1, Column2, Column3) AS ( SELECT Column1, Column2, Column3 FROM SomeTable ) SELECT * FROM cte Temp Table SELECT Column1, Column2, Column3 INTO #tmpTable FROM...

21
Преимущества Common Table Expression (CTE)?

Этот вопрос был перенесен из переполнения стека, поскольку на него можно ответить в Exchange Stack Exchange для администраторов баз данных. Мигрировал 7 лет назад . Из MSDN : В отличие от производной таблицы, CTE может иметь самоссылку и на нее можно ссылаться несколько раз в одном запросе. Я...

19
Как на самом деле работает рекурсия SQL?

В отличие от SQL из других языков программирования, структура рекурсивного запроса выглядит довольно странно. Пройдите через это шаг за шагом, и это, кажется, разваливается. Рассмотрим следующий простой пример: CREATE TABLE #NUMS (N BIGINT); INSERT INTO #NUMS VALUES (3), (5), (7); WITH R AS (...

19
Создать план руководства по кешированию (ленивая шпуля) результата CTE

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

16
Несколько операций с использованием WITH

Есть ли способ выполнить несколько операций с помощью WITHоператора? Что-то вроде WITH T AS ( SELECT * FROM Tbl ) BEGIN OPEN P_OUTCURSOR FOR SELECT * FROM T; SELECT COUNT(*) INTO P_OUTCOUNT FROM T; END; Я хочу выбрать некоторые данные и их количество...

16
Рекурсивный CTE, чтобы найти Всего для всех детей

Вот дерево сборки, которое я хочу найти с помощью рекурсивного T-SQLзапроса (предположительно CTE) с ожидаемыми результатами ниже. Я хочу знать общую сумму на каждую сборку с учетом любой детали. То есть, если я ищу «Заклепка», я хочу знать общее количество на каждом уровне в сборке, а не только...

15
Оптимизация иерархии CTE

Обновление ниже У меня есть таблица учетных записей с типичной архитектурой учетных записей acct / parent для представления иерархии учетных записей (SQL Server 2012). Я создал VIEW, используя CTE для хэширования иерархии, и в целом он работает прекрасно и по назначению. Я могу запросить иерархию...

15
PostgreSQL Рекурсивная Глубина Потомка

Мне нужно вычислить глубину потомка от его предка. Когда запись имеет object_id = parent_id = ancestor_id, она считается корневым узлом (предком). Я пытался запустить WITH RECURSIVEзапрос с PostgreSQL 9.4 . Я не контролирую данные или столбцы. Схема данных и таблиц поступает из внешнего источника....

14
Почему CTE должен начинаться с точки с запятой?

Я только что посмотрел на пост в StackOverflow, где Аарон Бертран предлагает использовать CTE вместо таблицы чисел, что является элегантным способом выполнения поставленной задачи. Мой вопрос: почему первая строка CTE начинается с точки с запятой? ;WITH n AS (SELECT TOP (10000) n FROM (SELECT n =...

14
Функция PostgreSQL не выполняется при вызове из CTE

Просто надеюсь подтвердить мои наблюдения и получить объяснение того, почему это происходит. У меня есть функция, определенная как: CREATE OR REPLACE FUNCTION "public"."__post_users_id_coin" ("coins" integer, "userid" integer) RETURNS TABLE (id integer) AS ' UPDATE users SET coin = coin + coins...

13
Почему строки, вставленные в CTE, не могут быть обновлены в одном выражении?

В PostgreSQL 9.5 приведена простая таблица, созданная с помощью: create table tbl ( id serial primary key, val integer ); Я запускаю SQL, чтобы ВСТАВИТЬ значение, а затем ОБНОВИТЬ его в том же выражении: WITH newval AS ( INSERT INTO tbl(val) VALUES (1) RETURNING id ) UPDATE tbl SET val=2 FROM...

12
Как отфильтровать использование определяемой пользователем скалярной функции из данных аудита SQL Server?

У нас есть база данных SQL Server, которая имеет спецификацию аудита базы данных, которая проверяет все выполняемые действия в базе данных. CREATE DATABASE AUDIT SPECIFICATION [dbAudit] FOR SERVER AUDIT [servAudit] ADD (EXECUTE ON DATABASE::[DatabaseName] BY [public]) Мы обнаружили, что некоторые...

12
Как отсортировать результаты рекурсивного запроса в расширенном древовидном режиме?

Предположим, у вас есть nodesтакие таблицы: CREATE TABLE nodes ( node serial PRIMARY KEY, parent integer NULL REFERENCES nodes(node), ts timestamp NOT NULL DEFAULT now() ); Он представляет собой стандартную узловую древовидную структуру с корневыми узлами вверху и несколькими дочерними узлами,...

11
Удивительные результаты для типов данных с модификатором типа

При обсуждении рекурсивного решения CTE для этого вопроса: Получить последние 5 различных значений для каждого идентификатора @ypercube наткнулся на удивительное исключение, которое привело нас к исследованию обработки модификаторов типов. Мы обнаружили удивительное поведение. 1. Тип приведение...

11
В чем разница между WITH CTE и WITH CTE (<column_names>)?

Как показано в разделе Использование общих табличных выражений в MSDN, вы можете определить CTE как: WITH expression_name [ ( column_name [,...n] ) ] AS ( CTE_query_definition ) и используйте это как: SELECT <column_list> FROM expression_name; Допустим, у меня есть следующие 2 CTE with cte1...

10
Какие правила определяют, когда SQL Server использует CTE в качестве «области оптимизации»?

Некоторое время назад Брент Озар опубликовал статью, в которой подробно описываются некоторые различия между SQL Server и PostgreSQL: Два важных различия между SQL Server и PostgreSQL Первый момент («CTE - это заборы для оптимизации») попался на глаза, поскольку очевидно, что в представленном...

10
Как «намекнуть» на кардинальность рекурсивного CTE?

Я использую следующий рекурсивный CTE в качестве минимального примера, но в целом оптимизатор должен использовать «угаданные» кардинальные значения по умолчанию для рекурсивных CTE: with recursive w(n) as ( select 1 union all select n+1 from w where n<5 ) select * from w; /* n --- 1 2 3 4 5 */...

9
Разница между встроенным представлением и предложением WITH?

Встроенные представления позволяют выбирать из подзапроса, как если бы это была другая таблица: SELECT * FROM /* Selecting from a query instead of table */ ( SELECT c1 FROM t1 WHERE c1 > 0 ) a WHERE a.c1 < 50; Я видел, что это относится к использованию различных терминов: встроенные...

8
Почему этот рекурсивный CTE с параметром не использует индекс, когда он использует литерал?

Я использую рекурсивный CTE в древовидной структуре, чтобы перечислить всех потомков определенного узла в дереве. Если я напишу значение литерального узла в своем WHEREпредложении, SQL Server фактически применяет CTE только к этому значению, предоставляя план запроса с низким фактическим числом...