Я хочу поместить «случайный» вывод из моего набора результатов (около 1,5 мил. Строк) в файле отсортированным образом. Я знаю, что могу использовать сортировку по команде в моем запросе, но эта команда «дорогая». Можете ли вы сказать мне, есть ли какой-либо алгоритм для записи строк набора результатов в файле, чтобы содержимое сортировалось в конце, и могу ли я увеличить производительность? Я использую java 1.6, и запрос имеет несколько объединений.Запись результатов в файл с отсортированным результатом
ответ
Определите индекс для критериев сортировки в вашей таблице, после чего вы можете без проблем использовать предложение order by и написать файл, как он поступает из набора результатов.
Если ваш запрос имеет несколько объединений, создайте соответствующие индексы для объединений и для критериев сортировки. Вы можете сортировать данные в своей программе, но вы будете тратить время. Это время будет намного более ценным при использовании обучения, как правильно настроить/использовать вашу базу данных, а не изобретать алгоритмы сортировки, уже присутствующие в движке базы данных.
Возьмите профилировщик базы данных и проверьте план выполнения запроса.
В моем опыте сортировки на стороне базы данных, как правило, так же быстро или быстрее ... конечно, если столбец сортировке по индексируется
Если вы читаете из базы данных, получать отсортированный вывод не должен быть поэтому «дорогой», если у вас есть соответствующие индексы.
Но, иногда со сложными запросами, для оптимизатора SQL очень сложно применять индексы. В этом случае БД просто накапливает результаты во временной таблице и сортирует ее для вас прозрачно.
Очень маловероятно, чтобы вы могли соответствовать уровню оптимизаций, введенных в ваш механизм БД; но если ваша проблема возникает из-за того, что вы выполняете некоторую постобработку данных, которая отрицает любую сортировку, выполняемую БД, тогда у вас нет другой альтернативы, кроме ее сортировки самостоятельно.
Опять же, проще всего использовать БД: просто напишите во временную таблицу с соответствующим индексом и дампом оттуда.
Если вы уверены, что данные всегда будут вписываться в ОЗУ, вы можете отсортировать их в памяти. Это единственный случай, когда может быть в состоянии побить двигатель БД, просто потому, что вы знаете, что вам не нужен HD-доступ.
Но это много «если». Лучше оставайтесь с вашей БД
Стресс, который может «понравиться», потому что, если данные соответствуют ОЗУ, база данных знает (или может быть рассказана) об этом тоже, и вы вернулись в квадрат. – 2008-10-08 10:28:42
Если вам нужны отсортированные данные, кто-то должен это сделать - либо вы, либо база данных. Разумеется, проще добавить ORDER BY к запросу. Но нет причин, по которым вы не можете сортировать его в памяти на своей стороне. Самый простой способ - упорядочить данные в сортированной коллекции (TreeSet, TreeMap) с помощью Comparator для сортировки по столбцу, который вам нужен. Затем выпишите отсортированные данные.
Нет причин, по которым вы не можете, но по эффективности, вы действительно не должны, если у вас нет особого случая (данные вписываются в память, очень странная схема базы данных, которая приводит к плану запроса, который не может быть исправлен). – 2008-10-09 01:03:45
- 1. Sqlite Запрос выбора запроса с отсортированным результатом в отношении OFFSET
- 2. Как я могу использовать izip в python с отсортированным результатом?
- 3. Запись результатов в файл в Python 2.7
- 4. Запись результатов в файл сервера
- 5. Запись результатов запроса в файл
- 6. Запись из словаря в текстовый файл отсортированным способом (python)
- 7. запись результатов в текстовый файл с Perl
- 8. Запись данных в файл с результатом не соответствует
- 9. Запись в файл результатов в пустом файле
- 10. Запись результатов в двоичный файл в MATLAB
- 11. Запись результатов теста Selenium Python в файл
- 12. Запись R случайных результатов леса в файл
- 13. Запись динамических результатов запроса в файл
- 14. Запись набора результатов в файл csv
- 15. Запись результатов SQL-запроса в текстовый файл
- 16. Запись результатов mysql с таймингами
- 17. Запись вывода в файл, полученный с помощью результатов
- 18. Запись результатов запроса FOR XML в файл с C# .NET
- 19. Mysql Присоединиться к 3 таблицам в одном запросе со отсортированным результатом
- 20. Запись результатов ping python?
- 21. Как напечатать все строки, связанные с моим отсортированным результатом в Linux
- 22. Запись трассировки в файл
- 23. Выполнение команды zgrep и запись результатов в файл
- 24. Tailing Log File и запись результатов в новый файл
- 25. Запись результатов в файл внутри цикла foreach R
- 26. Загрузить файл с машиносчитываемым результатом выполнения
- 27. Синхронизация массива с отсортированным Backbone.Collection
- 28. Файл не найден с результатом файла
- 29. Python - слом разбитого сайта и запись результатов в файл
- 30. Запись результатов в файл, некоторые идут по следующей строке. python
Какой язык вы используете? – johnc 2008-10-08 10:15:12