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 вопросика :)