2015-01-07 2 views
1

У меня есть большой стол, который содержит 700 миллионов строк и десятков столбцов. Мне нужно, чтобы он выполнял операцию левого соединения в качестве левой таблицы.Получить определенное количество строк из таблицы

Однако, поскольку он настолько велик, потребление времени не поддается цене. Поэтому я хотел бы разбить на несколько меньших таблиц и выполнить задачу в многопроцессорной манере.

Я знаю, что для этого имеется пакет SSIS, но я не могу его использовать.

Кроме того, я знаю, что это простой способ добавить идентификатор строки к каждой из строк, но, к сожалению, я не могу внести изменения в таблицу.

Итак, могу я знать, как достичь своей цели?

Большое спасибо.

+1

Попробуйте 'CTE', это может сработать для вас. – Bharadwaj

+0

@Bharadwaj Привет, спасибо за подсказки, можете ли вы показать мне пример? Благодарю. – ChangeMyName

ответ

1

Использование CTE и row_number()

;WITH cte_tbl AS 
(
    SELECT *, 
     ROW_NUMBER() OVER (ORDER BY [First Name]) AS RowNumber 
    FROM your_table 
) 
SELECT * FROM cte_tbl 
WHERE RowNumber < 100 

Вы можете получить записи для любого диапазона.

-1

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

1

Используйте fetch-offset, если вам нужно определенное количество строк, используя sql-script.

так:

SELECT First Name + ' ' + Last Name FROM big_table ORDER BY First Name OFFSET 15 ROWS; 

SELECT First Name + ' ' + Last Name FROM big_table ORDER BY First Name OFFSET 10 ROWS FETCH NEXT 5 ROWS ONLY; 
Смежные вопросы