[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Углубимся в оптимизацию запросов
N0ob
Всем доброго времени суток форумчане. Вопрос про оптимизацию сейчас играет большую роль. И вот я хочу познать это каверзную "науку" :D Есть у меня несколько этаких вопросиков. Начнем пожалуй(с простого):
1)
У меня имеется таблица в БД. Вот ее структура:
 id name password email activate avatar date_reg

Допустим я делаю запрос на выборку:
1 вариант:
SELECT `activate`, `name`, `id`, `password`, `email`, `date_reg`, `avatar` FROM `users`

2 вариант:
SELECT `id`, `name`, `password`, `email`, `activate`, `avatar`, `date_reg` FROM `users`

Вроде различий нету. В обеих запросах вытаскиваются одни и те же столбцы, но есть одно большое НО ;) Наверно каждый заметил, что в первом запросе выборка столбцов написана в разнобой. То есть столбцы вытаскиваются не в том порядке в котором они записаны в таблице. А вот во втором запросе все как в табличке, по порядку. Вопрос в том будут ли эти два запроса отличаться временем выборки и нагрузкой на сервер? мне кажется что да! первый будет медлительней и "тяжелее", а вот второй намного "легче", потому что когда вытаскивает записи ему гораздо легче вытаскивать их по порядку. Это мое мнение жду вашего. И желательно не только мнения, но и правильного ответа :)

2)
Имеется два вида запроса:
1 вид
<?php 
$select_news = mysql_query("SELECT `id`, `title`, `text`, `date_add`, `views`, `author` FROM `news`");//в поле `author` по традиции храним id юзера

if(mysql_num_rows($select_news))
{
while($row = mysql_fetch_assoc($select_news))
{
$select_user = mysql_query("SELECT `login`, `avatar` FROM `users` WHERE `id`='".$row['author']."'");
$author = mysql_fetch_assoc($select_user);

echo "<table>
<tr>
<td>"
.$author['login']."<br><img src=\"".$author['avatar']."\"</td>
<td>"
.$row['title']." Дата добавления: " . $row['date_add'] . " Просмотров: " . $row['views'] . "<br>" . $row['text'] . "</td>
</tr>
</table>"

}
}

2 вид:
 <?php 
$select_news = mysql_query("SELECT `id`, `title`, `text`, `date_add`, `views`, `author` FROM `news`");//в поле `author` по традиции храним id юзера

if(mysql_num_rows($select_news))
{
$news = array();
$users = array();

while($row = mysql_fetch_assoc($select_news))
{
$news[] = array('id'=>$row['id'], 'title'=>$row['title'], 'text'=>$row['text'], 'date_add'=>$row['date_add'], 'views'=>$row['views']);
$users[] = $row['author'];
}

$users = implode(",", $users);
$select_users = mysql_query("SELECT `login`, `avatar` FROM `users` WHERE `id` IN (".$users.")");

while($row = mysql_fetch_assoc($select_users))
{
$author[] = $row;
}

for($i=0;$i<count($news);$i++)
{
echo "<table>
<tr>
<td>"
.$author[$i]['login']."<br><img src=\"".$author[$i]['avatar']."\"</td>
<td>"
.$news['title']." Дата добавления: " . $news['date_add'] . " Просмотров: " . $news['views'] . "<br>" . $news['text'] . "</td>
</tr>
</table>"

}
}


3)
Достаточно ли вот такого запроса:
  OPMIZIE TABLE `users`

например после каждого mysql запроса. То есть идет у меня запрос на выборку юзеров сразу же идет запрос ВЫШЕ, то есть сразу же ее оптимизируем. И какие еще методы оптимизации может посоветовать?
P.S: Именно посоветовать, а не ткнуь на первый попавшийся линк в гугле

Вот вроде бы все. Простеньких 3 вопросика :)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.