Показать сообщение отдельно
  #1 (permalink)  
Старый 04.08.2012, 00:24
Аватар для Freakmeister
Аспирант
Отправить личное сообщение для Freakmeister Посмотреть профиль Найти все сообщения от Freakmeister
 
Регистрация: 15.01.2011
Сообщений: 61

Как работает mysql_query?
Снова встал ребром вопрос - как написать менее ресурсоёмко? Вчера мой сайт благополучно лёг после вживления в него нового куска кода. При 5 пользователях онлайн, проц был съеден моментально, а остатки оперативы в последующие 10 минут. Причиной этому послужил не код приведённый ниже - это уже моя попытка понять как можно написать менее ресурсоёмко.

Собссна, теоретический вопрос к знатокам - когда я делаю такой запрос с циклом, то что происходит при этом?
var $limit=10;
var $n=0;
$query = mysql_query("SELECT * FROM phpbb_posts ORDER BY post_id DESC", $db);
while ($n<$limit) {
	$row = mysql_fetch_array($query);
	$n++;
	//операции
}

Вариант А: mysql_query вытаскивает ВСЕ данные из phpbb_posts одним запросом, что очень ресурсоёмко, а потом mysql_fetch_array обрабатывает результат уже средствами php.
Вариант Б: mysql_query просто инициализирует связь с таблицей по выбранному фильтру, без вытаскивания значений, что не даёт особой нагрузки, а само вытаскивание уже происходит маленькими порциями при каждом обращении к mysql_fetch_array.
Вариант Ц: Ты баклан, почему ты не использовал LIMIT в SQL-запросе?

Для тех кто склоняется к последнему варианту, поясняю - в моём случае использовать LIMIT в SQL-запросе не получится. Потому что проверка прав пользователя происходит средствами php, и приходится сначала вытаскивать запись из БД, а потом уже проверять километровой функцией нужно выводить её на страницу или нет (грёбаный phpBB).

Последний раз редактировалось Freakmeister, 04.08.2012 в 00:27.
Ответить с цитированием