SQL SERVER: Как я могу перечислить строки оператора select с помощью оператора union, но без перезапуска счетчика, без двуличности и без подзаголовка? Является ли это возможным? Мне нужно что-то с исполнением. Я получил его с подзапросом и функцией ROW_NUMBER(), но мне нужно что-то быстрее. Есть идеи? Благодаря!Нумерация строк оператора select с оператором union
ответ
Это самый быстрый, что я могу думать:
select t.*, row_number() over (order by (select NULL)) as seqnum
from ((select * from A) union all
(select * from B)
) t;
Две вещи. Сначала это использует union all
, а не union
- поэтому дубликаты не удаляются. Это ускоряет запрос, если повторное удаление не требуется.
Во-вторых, он использует order by (select NULL))
. По моему опыту, это, по-видимому, назначает последовательный номер на выходе, фактически не налагая накладные расходы на сортировку. Это строго основано на моем опыте. Я еще не нашел документацию по SQL Server, которая объясняет это. Но, я использовал его в прошлом успешно.
WOW 'заказать (выбрать NULL)' - удивительно. – Hogan
, так что на самом деле МОЖЕТ давать неправильные результаты? –
GREAT! «Выберите NULL» в ORDER BY работает! Выбор почти сразу возвращается. Раньше это заняло около 4 секунд. Спасибо! – user2137198
Если вы используете SQL Server 2012+, вы можете попробовать это:
DECLARE @T TABLE (col1 INT, col2 INT);
INSERT INTO @T
VALUES (1, 2), (3, 4), (5, 6);
SELECT COUNT(*) OVER (
ORDER BY col1 ROWS UNBOUNDED PRECEDING
) RN, col1, col2
FROM @T
- 1. SQL: нумерация строк, возвращаемых оператором SELECT
- 2. SQL - 2 оператора SELECT с UNION и
- 3. Как заменить оператор OR с оператором UNION?
- 4. Zend_Db_Select запрос с оператором UNION и IN
- 5. оператора SELECT Объединение нескольких строк
- 6. Использование SELECT с UNION
- 7. Проблема с UNION SELECT
- 8. Удаление всех строк НЕ выбрано оператором SELECT
- 9. Сумма всех строк, возвращающихся с оператора SELECT
- 10. Проблема с оператором Select
- 11. BigQuery Нумерация строк
- 12. SELECT TOP ... FROM UNION
- 13. Как Kleene Star взаимодействует с оператором Union?
- 14. Как получить счет с помощью оператора UNION
- 15. Нумерация строк массива
- 16. R: Нумерация строк последовательно
- 17. последовательная нумерация строк
- 18. Нумерация строк матрицы данных
- 19. SQL с помощью оператора UNION из ELANCE
- 20. запрос без оператора Union SQL
- 21. MySQL 'union all' не возвращает информацию для второго оператора select
- 22. Нумерация строк awk script
- 23. Использование LinqDataSource с оператором SELECT
- 24. SELECT count (*) с оператором OR
- 25. SELECT INTO с оператором CASE
- 26. Условный SUM с оператором SELECT
- 27. SQL SELECT Union SELECT FROM (Select ...)
- 28. Итерировать количество строк, возвращаемых из оператора select
- 29. Неожиданное поведение оператора UNION ALL
- 30. с использованием UNION вместе с оператором WITH в SQL
не ясно. Можете ли вы предоставить данные теста и ожидаемый результат. –
Сколько времени занимает запрос? Каково ваше определение «достаточно быстро»? Проанализировали ли вы план запросов и обеспечили отсутствие индексов? –