Оптимизация работы с DB(базой данных)

mak_sim2001

Новичок
Оптимизация работы с DB(базой данных)

Накопилось несколько вопросов которые бы хотелось прояснить для себя,
1. Если DB очень большая, и очень сложные запросы, для того что-бы получить результат поиска зачастую приходится групировать по 5-6 таблиц, а потом сортировать результат, либо есть другой вариант делать много SQL запросов(в цикле), Что будет быстрее? От чего это зависит(почему)?
2. Сразу к предыдущему вопросу, (использование "LIMIT")например результате запроса который я получаю :

id = 1
category_id = 5

id = 1
category_id = 3000

id = 5
caegory_id = 14968

id = 5
category_id = 70

id = 5
category_id = 70

приминять LIMIT в sql - запросе неполучется, результат нуждается в сортировке(групировке), а при постраничном выводе прийдется либо делать каждый раз один и тот-же запрос с сортировкой (получать и обрабатывать огромный многомерный масив) либо все таки делать кучу мелких запросов (может это ответ на первый вопрос?)

Буду признателен если знающие люди мне чего-то подскажут, поделятся опытом
 

walrus

Новичок
1. Надо смотреть, что действительно тормозит выборку по этому запросу. Нужен explain. В главе манула про оптимизацию сказано, что, например, при вставке значений лучше делать один запрос на вставку 500 записей, чем 500 запросов на вставку 1 строки. Опять же правильная установка индексов должна играть здесь решающее значение.
читаем здесь
http://mysql.org/doc/refman/5.0/en/optimization.html

2. совсем не понял про что вопрос
 

Alexandre

PHPПенсионер
либо есть другой вариант делать много SQL запросов(в цикле), Что будет быстрее? От чего это зависит(почему)?
когда делаешь много запросов в цикле, то у тебя получается много обращений к БД.

А ты про хранимые процедуры почитай, полезная штука.
 

mak_sim2001

Новичок
walrus
Спасибо за ссылку, буду читать, второй вопрос касательно LIMIT, если я делаю постраничный вывод то мне, и запрос возвращает мне первые 30 записей то есть вариант что после группировки (у записей будет одинаковый id но 30 разных location_id) у меня поиск выдаст одну запись...
Alexandre
Я уже в поиске наткнулся на это и сейчас пытаюсь понять с чем это едят и как этим пользоваться, также нашел кое-что по временным таблицам я так понял что в это тоже вариант.
Есть ли ресурсы на русском где можно об этом подробно почитать?
 

walrus

Новичок
mak_sim2001
Обясни пожалуйста что ты хочешь сделать с лимитом?
сортировка выполняется оператором order by, группировка group by, limit просто ограничивает количество записей в результирующем наборе.
 
Сверху