Фактически я сделал это для точки данных на презентации, которую я собираю. Тест сортирует массив из 250 000 целых чисел, используя собственную функцию сортировки и реализацию алгоритма быстрой сортировки, написанного на php. Содержимое массива одинаково для обоих прогонов, данные рандомизированы, а время, указанное только для выполнения сортировки, а не для другой обработки, необходимой для вызова интерпретатора php.
Результаты:
Native sort implementation: 1.379 seconds PHP quicksort implementation: 30.615 seconds
Определенно использовать встроенную реализацию. Это должно быть для любого интерпретируемого языка.
Результаты для других языков, которые я тестировал с одинаковыми условиями, используя ту же самую реализацию на одном и том же оборудовании и ОС, обеспечивают интересное сравнение производительности и ставят результат PHP в перспективе:
C: 0.107 seconds Java: 0.250 seconds JavaScript (FF3): 4.401 seconds
Примечательно, что Chrome и Safari выполнили много быстрее для теста JavaScript, но я не включаю их здесь, потому что эти тесты были записаны в другой среде .
SELECT order_id,product_name,qty
FROM orders
WHERE foo = 'bar'
INTO OUTFILE '/var/lib/mysql-files/orders.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
Используя эту команду названия столбцов.
Также примечание, которое /var/lib/mysql-files/orders.csv
будет на сервер , который выполняет MySQL. У пользователя, под которым работает процесс MySQL, должны быть полномочия записать в каталог, выбранный, или команда перестанет работать.
, Если Вы хотите записать вывод в свою локальную машину от удаленного сервера (особенно размещенный или виртуализировать машину, такую как Heroku или Amazon RDS), это решение не подходит.
Кроме того, к ответу выше, у Вас может быть таблица MySQL, которая использует механизм CSV.
Затем у Вас будет файл на Вашем жестком диске, который всегда будет в формате CSV, который Вы могли просто скопировать, не обрабатывая его.
mysql --batch, -B
Печатать результаты, используя табуляцию в качестве разделителя столбцов, с каждой строкой в новая линия. С этой опцией mysql не использует файл истории. Пакетный режим приводит к нетабличному формату вывода и экранированию специальные символы. Экранирование можно отключить, используя необработанный режим; видеть описание параметра --raw.
Это даст вам файл, разделенный табуляцией. Поскольку запятые (или строки, содержащие запятую) не экранируются, изменить разделитель на запятую непросто.
$ mysql your_database --password=foo < my_requests.sql > out.csv
Которая разделена табуляцией. Протестируйте его так, чтобы получить настоящий CSV (спасибо @therefromhere):
... .sql | sed 's/\t/,/g' > out.csv
Решение OUTFILE, данное Полом Томблином, вызывает запись файла на самом сервере MySQL, поэтому это будет работать, только если у вас есть доступ к FILE , а также доступ для входа в систему или другие средства для получения файл из этого ящика.
Если у вас нет такого доступа и вывод с разделителями табуляции является разумной заменой CSV (например, если ваша конечная цель - импортировать в Excel), тогда решение Сербаута (с использованием mysql --batch
и, возможно, - необработанный
).