|
|
|
| Вопрос простой.
Уменьшают ли объединённые запросы нагрузку на базу данных MySQL?
Быстрее ли будут выполняться запросы?
Стоит ли вообще использовать JOIN? | |
|
|
|
|
|
|
|
для: Jaroslav
(17.02.2011 в 23:27)
| | Сложный вопрос, хорошо бы привести пример, "уменьшают" по сравнению с чем? Тут по разному может повернуться, когда уменьшают, когда увеличивают. | |
|
|
|
|
|
|
|
для: cheops
(18.02.2011 в 01:06)
| | Например, всегда пишу что-то типа:
$query_board = "SELECT * FROM table1 WHERE (id='25') ORDER BY id DESC";
$authorisation_board = mysql_query($query_board);
$athor_board = mysql_fetch_array($authorisation_board);
$query_rubrica_reed = "SELECT * FROM table2 WHERE (name='$athor_board[name]')";
$authorisation_rubrica_reed = mysql_query($query_rubrica_reed);
$athor_rubrica_reed = mysql_fetch_array($authorisation_rubrica_reed);
|
т.е. из одной таблицы что-то выбираю по условию. Затем выбираю из 2-й в соответствие с условиями из первой. JOIN - никогда не использую. Вот думаю, стоит ли их использовать или нет? И как правильно в этом случае его использовать? | |
|
|
|
|
|
|
|
для: Jaroslav
(18.02.2011 в 01:23)
| | Немножко время обработки можно подскортатить вложнным запросом
SELECT * FROM table2
WHERE name = (SELECT name FROM table1
WHERE (id='25')
ORDER BY id DESC
LIMIT 1)
|
PS Эмпирически считается, что вложенные запросы обрабатываются быстрее, чем два отдельных, а созданные при помощи JOIN быстрее, чем вложенные запросы. | |
|
|
|
|
|
|
|
для: cheops
(18.02.2011 в 01:51)
| | Спасибо.
А вот другой пример:
Правильно понимаю, что вместо записи:
$query_board = "SELECT id_aticle, login_aticle FROM chytalnya_aticle WHERE (login_aticle='neo') ORDER BY id_aticle DESC";
$authorisation_board = mysql_query($query_board);
while($reed_works = mysql_fetch_array($authorisation_board)) {
$query_rubrica_reed = "SELECT id_users, login_users FROM chytalnya_users WHERE (login_users='$reed_works[login_aticle]')";
$authorisation_rubrica_reed = mysql_query($query_rubrica_reed);
$athor_board = mysql_fetch_array($authorisation_rubrica_reed);
echo '<pre>'.print_r($reed_works, true).'</pre>';
echo '<pre>'.print_r($athor_board, true).'</pre>';
}
|
Предпочтительней использовать:
$query_board = "SELECT chytalnya_aticle.id_aticle, chytalnya_aticle.login_aticle, chytalnya_users.id_users, chytalnya_users.login_users FROM chytalnya_aticle LEFT JOIN chytalnya_users ON (chytalnya_users.login_users=chytalnya_aticle.login_aticle) WHERE chytalnya_aticle.login_aticle='neo'";
$authorisation_board = mysql_query($query_board);
while($athor_board = mysql_fetch_array($authorisation_board)) {
echo '<pre>'.print_r($athor_board, true).'</pre>';
}
|
| |
|
|
|
|
|
|
|
для: Jaroslav
(18.02.2011 в 02:31)
| | Наверно, это был философский вопрос..
Понятно. Уже потренировался на практике..
По графикам будет видно... )) | |
|
|
|