|
TRIAL ↓
|
 |
|
14 Сентябрь, 2011, 10:54:48
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: Джедаи Карма: 7
Сообщений: 907 Сила слова: 0.77
|
Столкнулся с такой интересной вещью: был запрос
SELECT `id`, `nick`, `avatar` FROM `user` WHERE `id` IN (SELECT DISTINCT `from` FROM `message` WHERE `to` = '1' AND `type` = '0')
В таблице `message` около 7к записей. Данный запрос извлекал десяток.
На выполнение этого запроса ушла 21 сек !!!.
Переписал следующим образом:
$res = mysql_query("SELECT DISTINCT `from` FROM `message` WHERE `to` = '". $_SESSION['user']['id']. "' AND `type` = '0'");
while($rs = mysql_fetch_assoc($res)) {
$from_a[] = $rs['from'];
}
$res = mysql_query("SELECT `id`, `nick`, `avatar` FROM `user` WHERE `id` IN (". implode(", ", $from_a). ")");
Это дело выполнилось за 0.02 где-то. Проще говоря моментально.
В связи с этим встал вопрос, стоит ли использовать вложенные запросы и, самое главное, почему такая огромная разница в производительности!?!
|
|
|
|
|
Записан
|
from TRIAL with LOVE
|
|
|
|
phpdude ↓
|
 |
|
14 Сентябрь, 2011, 10:59:11 , спустя 4 минуты 23 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
я - ЭМО
Группа: в ухо Карма: 345
Сообщений: 20790 Сила слова: 1.66
|
В связи с этим встал вопрос, стоит ли использовать вложенные запросы и, самое главное, почему такая огромная разница в производительности!?!
потому что был foreach * foreac. а стало 2 * foreach. используй индексы и все будет ок. в первой таблице я так понимаю что ID - первичный ключ, тогда во второй таблице проставь from - индекс. и повтори первый запрос. удивишься как быстро все сработает :)
|
|
|
|
|
Записан
|
забанен. могу забанить других, пишите в личку BEER. Helping ugly people have sex since 1862.
|
|
|
|
TRIAL ↓
|
 |
|
14 Сентябрь, 2011, 11:05:52 , спустя 6 минут 41 секунду
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: Джедаи Карма: 7
Сообщений: 907 Сила слова: 0.77
|
Нихрена не понял ) Можешь написать как это дело по-человечески должно выглядеть на моем примере? :)
|
|
|
|
|
Записан
|
from TRIAL with LOVE
|
|
|
|
phpdude ↓
|
 |
|
14 Сентябрь, 2011, 11:13:54 , спустя 8 минут 2 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
я - ЭМО
Группа: в ухо Карма: 345
Сообщений: д-о-х-у-я! Сила слова: 1.66
|
Нихрена не понял ) Можешь написать как это дело по-человечески должно выглядеть на моем примере? :)
в твоем примере все нормально.
только не хватает смежного индекса на второй таблице по выбираемым полям.
|
|
|
|
|
Записан
|
забанен. могу забанить других, пишите в личку BEER. Helping ugly people have sex since 1862.
|
|
|
|
AlexB ↓
|
 |
|
14 Сентябрь, 2011, 11:31:03 , спустя 17 минут 9 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: в ухо Карма: 89
Сообщений: 3427 Сила слова: 2.6
|
TRIAL, открой для себя EXPLAIN и JOIN
|
|
|
|
|
Записан
|
|
|
|
|
TRIAL ↓
|
 |
|
14 Сентябрь, 2011, 11:40:00 , спустя 8 минут 57 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: Джедаи Карма: 7
Сообщений: 907 Сила слова: 0.77
|
Да давно открыть пора. А то я за все эти годы по MySQL ни одного учебника не прочитал. По этому для меня все эти JOINы и прочая фигня - темный лес.
phpdude, кажись понял что ты имеешь ввиду. Ладно, время будет попробую еще по шаманить, а пока так оставлю )
|
|
|
|
|
Записан
|
from TRIAL with LOVE
|
|
|
|
AlexB ↓
|
 |
|
14 Сентябрь, 2011, 11:56:53 , спустя 16 минут 53 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: в ухо Карма: 89
Сообщений: 3427 Сила слова: 2.6
|
Да давно открыть пора. А то я за все эти годы по MySQL ни одного учебника не прочитал. По этому для меня все эти JOINы и прочая фигня - темный лес.
phpdude, кажись понял что ты имеешь ввиду. Ладно, время будет попробую еще по шаманить, а пока так оставлю )
Хули оставлять и плодить говнокод.
Перепиши запрос на JOIN и отладь с помощью EXPLAIN, делов на 3 минуты ...
|
|
|
|
|
Записан
|
|
|
|
|
KaFe ↓
|
 |
|
14 Сентябрь, 2011, 01:32:16 , спустя 1 час 35 минут 23 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: Сраный Тролль Карма: -13346
Сообщений: 1727 Сила слова: -772.79
|
Перепиши запрос на JOIN
+1
|
|
|
|
|
Записан
|
|
|
|
|
phpdude ↓
|
 |
|
14 Сентябрь, 2011, 01:42:39 , спустя 10 минут 23 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
я - ЭМО
Группа: в ухо Карма: 345
Сообщений: д-о-х-у-я! Сила слова: 1.66
|
Перепиши запрос на JOIN
+1
вообще похуй. оптимизатор все равно жойн из where in сделает. скорости это не прибавит и не убавит.
|
|
|
|
|
Записан
|
забанен. могу забанить других, пишите в личку BEER. Helping ugly people have sex since 1862.
|
|
|
|
AlexB ↓
|
 |
|
14 Сентябрь, 2011, 02:02:07 , спустя 19 минут 28 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: в ухо Карма: 89
Сообщений: 3427 Сила слова: 2.6
|
вообще похуй. оптимизатор все равно жойн из where in сделает. скорости это не прибавит и не убавит.
да вот не факт, сталкивался что оптимизатор лажается на таких вещах и вложенный запрос исполняется много раз
с тех пор вообще перестал использовать вложенные запросы без крайней необходимости
в общем, EXPLAIN обо всем раскажет ...
|
|
|
|
« Последнее редактирование: 14 Сентябрь, 2011, 02:00:52 от AlexB »
|
Записан
|
|
|
|
|
phpdude ↓
|
 |
|
14 Сентябрь, 2011, 02:02:02 , спустя
|
НЕ ХУЕТА!
ХУЕТА!
|
я - ЭМО
Группа: в ухо Карма: 345
Сообщений: д-о-х-у-я! Сила слова: 1.66
|
в общем, EXPLAIN обо всем раскажет ...
это факт .... тут не поспоришь)
|
|
|
|
|
Записан
|
забанен. могу забанить других, пишите в личку BEER. Helping ugly people have sex since 1862.
|
|
|
|