русский
Germany.ruForen → Архив Досок→ Programmierung

Спецы ассемблера

12.04.23 09:02
Re: Спецы ассемблера
 
Программист коренной житель
in Antwort Muenchausen 12.04.23 07:38
Тоесть имеем текстовый файл например 90 гиг, где база из двух столбцов, в первом 30 значный код , во втором дата , и таких строчек по моему 870 млн штук, сколько времени нужно чтобы просто отсортировать по тридцатизначному коду в порядке возрастания ?

Еще раз, все зависит от того, что тебе нужно иметь на выходе.

Самое простое и быстрое решение:

1) создать БД

2) сделать табличку из 2- колонок (id и дата)

3) добавить индекс по колонке код

4) дальше просто считываешь все эти 870млн строк и добавляешь в БД.


Отсортированные данные готовы. Осталось их только выбрать: select * from <table> order by <id>. Ну очевидно, что 870млн строк за раз никому не надо, поэтому имеет смысл сделать вывод по частям: select * from <table> order by <id> offset X rows fetch next Y rows only (для MSSQL).


Сколько на это уйдет времени сказать не могу, но это будет не то, чтобы очень долго.


Другой способ - создать индекс самостоятельно. Т.е. рядом с текстовым файлом появится еще один файл, в котором будет сохранен двухсвяхный список.

Если нужен совсем хардкор, то различные алгоритмы сортировки гуглятся на раз. Если в исходном файле данные одинковой длины, то жизнь несколько упрощается.


2й и 3й способы будут гарантированно медленнее и геморройнее в реализации. Зато 100% свое :D


Выбирай любое подходящее тебе решение :)

 

Sprung zu