У меня есть большой стол (db2.table1), содержащий чуть более 3 миллиардов строк данных. Я пытаюсь выбрать определенный процент (например, 50 процентов в качестве примера) строк из этой очень большой таблицы и вставить его в другую таблицу, которая изначально пуста.Самый быстрый способ скопировать процент строк из массивной таблицы?
У меня есть этот запрос,
INSERT INTO db1.table1 (col1, col2, col3, col4)
SELECT TOP 50 PERCENT col1, col2, col3, col4 FROM db2.table1;
Это работает, но это невероятно медленно. Потребовалось почти час, чтобы выбрать около 80% стола. Однако, когда я запускаю select * и вставляю запрос на копирование по всем строкам данных (например, ниже), он заканчивается в течение 3 минут.
INSERT INTO db1.table1 (col1, col2, col3, col4)
SELECT * FROM db2.table1;
С моей Reasearch, я понял, что что-то делать с TOP необходимости отсортировать строки данных первого, который требует много дискового ввода/вывода, и это может вызвать довольно значительное замедление особенно на столе, как большой как это.
Итак, теперь мне интересно, что будет быстрый способ выбрать и скопировать некоторую определенную часть данных из одной очень большой таблицы в другую? Выбранные строки необязательно должны быть случайными или упорядоченными.
Редактировать: Я должен добавить, что я действительно не знаю или не забочусь о том, какие строки выбраны, поскольку таблица содержит случайно генерируемые буквенно-цифровые строки. Мне просто нужно скопировать строки x или y% таблицы для целей тестирования.
Шаг 1 - определить, какие строки вы хотите скопировать. –
Шаг 2 - Вставьте строки '' wanted ''в временную таблицу. – FutbolFan
Какой у вас релиз Teradata? TOP, в результате чего сорт звучит как очень старый. Вместо этого попробуйте «SEELCT * FROM db2.table1 SAMPLE 0.5'. – dnoeth