2015-10-08 1 views
2

Я немного ограниченным количеством вычислений, потому что я не хочу убивать базу данных или пропускную способность при потере часов.выберите случайный ~ 100 миллионов строк миллиардов

мой текущий запрос что-то вроде этого:

SELECT TOP (100000000) mycolumns 
FROM mydb 
WHERE lower_control_limit> value1 
    AND upper_control_limit < value2 ; 

Я не получаю приличную случайную выборку, но я боюсь положить команды, которые должны пройти миллиарды строк перед возвратом значения. Мне нужна единая случайная выборка над доменом (строками).

Что такое «лучшая практика» для вытягивания нескольких сотен миллионов строк из магазина с большим количеством миллиардов строк?

Я видел случайное, но я просто беспокоюсь о размере запроса и ограниченных вычислительных ресурсов и ресурсах пропускной способности.

+0

Если удалить фильтр для ограничения вашего образца, она не вернется с результатами за минуты? Наверное, на данный момент это не «образец». – sean

+0

Нет. Топит весь баран моей рабочей станции, и он замерзает. Потребуется около получаса, чтобы потянуть его. В итоге мне приходится убивать процесс. – EngrStudent

+0

Вы тянете это в SSMS? Вы выполняете запрос с другой машины? – sean

ответ

0

Нашел: Select n random rows from SQL Server table

SELECT TOP (100000000) mycolumns 
FROM mydb order by newid() 
+0

Я собираюсь попробовать, но если он работает в течение часа или более, мне придется убить процесс и попробовать что-то другое. Это должно работать быстрее, чем это. – EngrStudent

+1

Если это так, вам нужно определить шею бутылки. Это загрузка или JMP для ее обработки, которая занимает больше времени. Чтобы узнать, что вы можете использовать SSMS для экспорта запроса в CSV, загрузите его в JMP. Просто щелкните правой кнопкой мыши DB и выберите экспорт, затем плоский файл ... Если экспорт быстрый, то узким местом является JMP. Вы запрашиваете помощь в работе с большими наборами в JMP. Или найти другой инструмент или купить более крупный компьютер ... – sean

+0

Кроме того, убедитесь, что вы не используете WIFI, используйте ethernet. – sean