|
|
|
| Всем привет!
Есть к примеру такая выборка
SELECT * from table1, table2, table4, table4 ...
и аналогичная (делают они то же самое)
SELECT * from table1
LEFT JOIN table2
LEFT JOIN table3
LEFT JOIN table4 ...
|
Какая из них пооптимальней по потреблению ресурсов.
В первом как я понимаю создается сумарная времення таблица из количества строк count(table1) умножить на count(table2) и уже там сопоставляется по условиям. Как посчитать размер временной таблицы?
а во втором случае создается ли временная таблица? и где почитать об этом
Спасибо! | |
|
|
|
|
|
|
|
для: Амбер
(21.07.2010 в 00:23)
| | >Есть к примеру такая выборка ...
>...и уже там сопоставляется по условиям.
В приведеных примерах нет ни одного условия.
Во втором варианте временная таблица будет даже несколько больше так как учитывает варианты несуществования строк второй и далее таблиц.
С другой стороны, если условий все равно нет, в общем-то и таблицу временную создавать смысла нет - знай гони себе вложенные циклы по строкам каждой из таблиц... | |
|
|
|
|
|
|
|
для: Trianon
(21.07.2010 в 01:20)
| | или такой пример:
SELECT DISTINCT kirm.name as kirm,fira.znk as znak,kirm.x as x,kirm.y as y,kirm.id as fid,adress,email,url,home,telefon
FROM uto,r_t,kirm
WHERE kirm.id=uto.id_firm and r_t.id_tovar=uto.id and kirm.registr=1
and id_rubrik IN (SELECT id FROM gr_new WHERE
id_parent IN (SELECT id_parent FROM gr_new WHERE id=".intval($_GET['id']).")
ORDER by fname asc
|
или
SELECT DISTINCT kirm.name as fna,fira.znk as znak,kirm.x as x,kirm.y as y,kirm.id as fid,adress,email,url,home,telefon
FROM uto
какой_то JOIN r_t ON r_t.id_tovar=uto.id
какой_то JOIN kirm ON kirm.id=uto.id_firm
INNER JOIN
(SELECT g1.id FROM gr_new g1
INNER JOIN gr_new g2 on g1.id=g2.id_parent
WHERE g2.id=".intval($_GET['id']).")
t0 ON t0.id=одна_из_таблиц.id_rubrik
WHERE kirm.registr=1
ORDER by fname asc
|
| |
|
|
|