2013-11-28 4 views
0

Вот этот план. У меня есть большой файл CSV-файла из БД с 10 000 входами. Те, запись выглядит следующим образом:PHP-файл для чтения по запросу MySql

  • ПгвЬЫате
  • LastName
  • тел
  • факс
  • мобильный
  • адрес
  • Явь-2012-selltotal
  • FEV-2012-selltotal
  • и т.п .. и т.п ..

Итак, я прочитал о получении этих данных CSV в базе данных MySQL и запросил эту базу данных, чтобы узнать, кто продал больше в 2012 году, или то, что продается в общей сложности john .. или что я прошу ..

Но для целей оптимизации кеширование, оптимизация и запрос индексирования являются обязательными ... ведьма приведет меня к этому вопросу. Поскольку я знаю 2-3 запроса, я буду делать ВСЕ ВРЕМЯ в БД ... быстрее ли взять CSV-файл, сделать запрос на PHP и записать файл результата на диск, поэтому весь мой вызов будет readfile -load-it, display-it?

другая формулировка вопроса ... делает запрос к БД быстрее или медленнее, чем чтение файла на диск? потому что, если БД имеет 10 000 записей, а результат продажи паула составляет 100 строк, файл будет ТОЛЬКО содержать 100 строк, он будет небольшим ... запрос всегда будет примерно в то же время

PLease помочь, я не то, что закодировать это сам просто обнаружить вещь, которая очевидна для вас ... заранее спасибо

+0

Написание результата запроса к файлу сделает всю оптимизацию БД, индексирование совершенно бесполезным разговором? чтение файла всегда будет «идеальным», потому что я знаю, что в 2012 году результат. txt - это ответ, который мне нужен, а в paul-file.txt все продажи paul – menardmam

ответ

3

Если придерживаться базы данных нормализации правил и есть все, что в базе данных, вы просто отлично. Записи 10k не очень много, и вам не нужно беспокоиться о производительности.

Запросы базы данных выполняются быстрее, потому что данные получают (частично) кешированные в памяти, а не на обычный диск, если они полностью не считываются в ОЗУ.

Горстка простые текстовые файлы могут быть быстрее, на первый взгляд, но когда у вас есть 100k файлы и 100k наборы данных в БД, база данных намного лучше, .. вы не имеете неограниченный (параллельный) инод доступа и замедляют и убивают ваш жесткий диск/ssd. Чем больше файлов у вас есть, тем медленнее все получается.

Вы бы также придется вручную кодировать очередь запирающий для чтения/записи действий, которые уже интегрированы в MySQL (row- и таблица блокировки).

Рассмотрите через несколько месяцев, что хотите расширить все, ... как бы вы реализовали JOINS в текстовых файлах? Все функции агрегирования MySQL уже имеет , построенный в (GROUP BY, ORDER BY, ...).

У MySQL есть профилировщик (используйте EXPLAIN перед каждым утверждением) и может так много оптимизировать даже большие массивы данных.

Когда я учился в школе, я сказал своему учителю: «Обычные файлы намного больше быстрее, чем ваш MySQL». Я сделал сайт с каталогом для каждого пользователя и сохраненные атрибуты в текстовом файле каждый внутри этой папки пользователя, просто как: /menardmam/username.txt, /menardmam/password.txt, /DanFromgermany/username.txt .... Я попытался бенчмарка это и я текстовый файл был быстрее , но только потому, что это всего лишь 1000 текстовых файлов. Когда дело доходит до реального бизнеса, 1000000000 наборов данных, объединены и перекрестный, нет способа сделать это с текстовыми файлами, и гораздо лучше при подаче заявки на работу, чтобы представить свою работу с MySQL, чем то, что вы сделали с текстовыми файлами ,

+0

я прочитал, что вручную кэширует в файле результат запроса ВСЕГДА ускоряет выполнение запроса ... и я сказал, что 10 000 для примера может быть 100 000, миллион или всего 60! – menardmam

+0

Ваш школьный эксперимент проложит мою точку зрения ... я не буду выращивать базу данных, например, facebook ... я буду держаться маленькой, до 100 000 записей! – menardmam

Смежные вопросы