| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Базы Данных > Нужна помощь по PHP + MySQL + БД большого размера |
| Автор: rodendron 24.4.2005, 13:25 | ||
| Добый день! Очень прошу вас о помощи, завтра показывать первую часть диплома, а у меня существует проблема следующего характера. Тестировал все на маленьгой БД, 2000 записей, а потом как и положено установил 800 000 и вот оно началось... В общем на запрос уходит по 30-40 минут. При 2000 записей все выполнялось за считанные секунды. Вот сам запрос:
Основная таблица - vagreis. Это в ней было 2000 записей, а сейчас 800000. Я же ставлю LIMIT и по идее у меня запрос же не должен зависеть от кол-ва записей. Что посоветуете сделать? А то проподаю очень сильно.... Помогите пожалуйста как можно скорее... А то еще всю ночь с дизайном водиться ,а тут запрос не клеится. |
| Автор: Mal Hack 24.4.2005, 16:41 |
| А с индексами у тебя как? Еще ИМХО, запрос облегчить (разбить) постараться. |
| Автор: rodendron 24.4.2005, 17:20 |
| Индексы уже сделаны На все, что участвует в запросе... ( А разбивать тяжело в том плане что использую вывод постранично и т.д. ... |
| Автор: rodendron 26.4.2005, 18:29 |
| В индексах все поля, которые участвуют в запросе. С запросом более менее разобрался. Но снова появилась проблема - выборка в phpmyadmin происходит быстрее, чем в своей страничке, где в принципе нет никаких наворотов. Тот же запрос. И еще - создается впечатление, что запрос начинает все дольше и дольше обрабатываться при все новом и новом запросе. То есть - чем больше раз его запускаешь. - Тем дольше. Такое может быть? Или это просто кажется? Но все равно - я на своем компе ощущаю небольшую разницу, оба долго. А у друга - в phpmyadmin - 10 секунд. Через WWW - 5 минут. Что посоветуете сделать? Заранее благодарен за ответ. |
| Автор: Opik 26.4.2005, 18:39 |
| покажи, как ты на страничке выполняешь запрос? |
| Автор: rodendron 26.4.2005, 23:35 | ||
|
| Автор: Mal Hack 27.4.2005, 10:21 | ||||
Заменяем на:
|
| Автор: Kud 2.5.2005, 19:40 | ||||||
Скорее всего БД еще не освободила ресурсы с прошлого запроса а т.к. ты говоришь, что она большая (таблица) то ей (базе) приходется "ложиться" в своп, для хранения и прошлого и нового резалта.
Такого рода циклы я уже давно отучил себя писать, ибо сильно уж грузит этот mysql_num_rows() а т.к. у тебя строк дофига то он и вызывается дофига раз. Вот кстати: думаю поймешь почему тормозило =) накидай на досуге ....
|
| Автор: rodendron 4.5.2005, 22:57 | ||
| Kud, твой код, это как я понял просто пример долгой работы вызова функции? Добавлено @ 22:58 И в этом вопросе лучше работает:
Добавлено @ 22:59 ? забыл знак вопроса добавить |
| Автор: Mal Hack 4.5.2005, 23:02 | ||
Да. |
| Автор: oxygen 5.5.2005, 02:19 |
| кстати как вариант - сделать свертки нужных полей в отдельные таблицы. Что-то типа кэша. Информация будет дублироваться, размер базы расти, но это не так критично как скорость SQL. В свое время мне это здорово помогло. |