Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011 Откуда: Крым
Помог: 25 раз(а)
В общем такая задача:
Имеется база данных(пока не большая, но с перспективой) . В бд 3 таблицы : users, orders, subscribers.
нужно организовать экспорт в excel.
в виде
Сейчас это все выгружается в массив, а потом обрабатывается.
Но уже сейчас этот массив весит порядка 200 MB! + прожорливый PHPExcel = 5 минут работы, 550MB оперативки = excel 2007 фаил с 30 000 строк, а что будет когда строк будет 100 000 ?
Стоит ли забить на оптимизацию запросов к бд, и не выгружать данные в массив, а делать запросы в цикле, тем самым экономя память, данная процедура происходит 1 раз в неделю.
как быть?
----- Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
snikers987
Отправлено: 08 Марта, 2012 - 16:55:00
Участник
Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011 Откуда: Крым
Помог: 25 раз(а)
Хорошо поставлю вопрос по другому, сильно ли нагрузит mysql сервер приблизительно 20 000 не сложных запросов(без join, union и т.п)?
- прост с синтаксической точки зрения (нет ни JOIN ни подзапросов, ни сортировок и т.п.) - но исполняться он может долго (собственно, прямая зависимость от размера)
Вопрос в том, обязательно ли выгружать это все в массив? Вероятно, можно создать ресурс, по которому построчно проходить - то есть вариация
- прост с синтаксической точки зрения (нет ни JOIN ни подзапросов, ни сортировок и т.п.) - но исполняться он может долго (собственно, прямая зависимость от размера)
Вопрос в том, обязательно ли выгружать это все в массив? Вероятно, можно создать ресурс, по которому построчно проходить - то есть вариация
----- Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
EuGen
Отправлено: 08 Марта, 2012 - 17:31:45
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
В этом случае оптимальнее создать индекс по соответствующим полям и использовать JOIN
А 22 секунды - подозреваю оттого, что нет индексов на полях, по которым идет JOIN
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
snikers987
Отправлено: 08 Марта, 2012 - 17:35:51
Участник
Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011 Откуда: Крым
Помог: 25 раз(а)
EuGen пишет:
В этом случае оптимальнее создать индекс по соответствующим полям и использовать JOIN
Можно поподробнее?
----- Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
EuGen
Отправлено: 08 Марта, 2012 - 17:36:53
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Можно. Сделайте EXPLAIN Вашего запроса с той структурой таблиц, что есть сейчас.
Затем создайте индексы по полям, которые используются для присоединения (JOIN) - и снова сделайте EXPLAIN
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
caballero
Отправлено: 08 Марта, 2012 - 17:43:56
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
поцепи на крон и пусть молотит
ну и индексы на полях id pid
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.