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

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

3
В чем разница между WITH CTE и WITH CTE (<column_names>)?
Как показано в разделе Использование общих табличных выражений в MSDN, вы можете определить CTE как: WITH expression_name [ ( column_name [,...n] ) ] AS ( CTE_query_definition ) и используйте это как: SELECT &lt;column_list&gt; FROM expression_name; Допустим, у меня есть следующие 2 CTE with cte1 as( select name from Table1 ) …

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

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

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

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

1
Как я могу получить иерархические значения из запроса ниже?
У меня есть таблица с именем Categoryстолбца CategoryID. В той же таблице есть столбец ссылок fParentCategoryID. Мне нужно, чтобы все идентификаторы категорий и идентификаторы их подкатегорий были разделены запятой. Например: если ID родительской категории 10 равен 1, а ID родительской категории 20 равен 10, то когда я печатаю ID 20 …

3
Использование CTE в IF EXISTS Query
Можно ли сделать что-то похожее на следующее в SQL Server 2012? IF EXISTS ( WITH DATA AS ( SELECT *, ROW_NUMBER() OVER(PARTITION BY column ORDER BY Column) AS rn FROM table ) SELECT * FROM DATA WHERE rn = 2 ) BEGIN ... END Я попытался использовать этот синтаксис и …
8 sql-server  cte 

3
Проверьте, есть ли какое-либо из значений в результате подзапроса
У меня сложный подзапрос, который возвращает список идентификаторов заказа. Мне нужно получить список клиентов, у которых есть эти заказы. Проблема заключается в том, что существует два способа назначения клиента для заказа (одно из двух полей). Я мог бы просто сделать что-то вроде этого: select * from Customers where orderId in …

1
Почему CTE открыт для потерянных обновлений?
Я не понимаю, что имел в виду Крейг Рингер, когда он комментировал: Это решение может потерять обновления, если транзакция вставки откатывается; нет никакой проверки, чтобы убедиться, что ОБНОВЛЕНИЕ затронуло любые строки. на https://stackoverflow.com/a/8702291/14731 . Пожалуйста, предоставьте пример последовательности событий (например, поток 1 выполняет X, поток 2 выполняет Y), который демонстрирует, …

1
Рекурсивная производительность CTE
Нужна помощь с рекурсивной производительностью CTE. Ниже CTE работает очень медленно, так как пытается рекурсивно извлекать иерархические данные. Таблица большая с каждым корневым идентификатором, имеющим до 3 рекурсивных элементов. Может быть около 200000 или более корневых идентификаторов. Я знаю, что рекурсивные CTE медленны для огромного набора данных, так как для …
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.