![]() |
Показаны 6 сообщений на этой странице |
Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- MySQL (http://netadmin.ws/forum/forumdisplay.php?forumid=40)
-- Оптимизация запросов (http://netadmin.ws/forum/showthread.php?threadid=7957)
Оптимизация запросов
1. Есть две таблицы (tbl1, tbl2), допустим обе содержат поле date, как выбрать за один запрос минимальную дату т.е.
SELECT MIN(a.date), a.score, MIN(b.date) FROM tbl1 a, tbl2 b GROUP BY a.date
Но такой запрос выполняется очень долго, более одной секунды, как его улучшить?
2. Имеетяся таблица tbl1, которпая содержит поля: id, date, score. Нужно сделать выборку определенных id и получить самую последнею запись, в два запроса это будет выглядеть так:
SELECT SUM(score) FROM tbl1 WHERE id IN(1,2,5,20,48)
SELECT * FROM tbl1 WHERE id IN(1,2,5,20,48) ORDER BY date DESC LIMIT 1
__________________
Всегда есть решение.
1. А сколько времени выполняются запросы отдельно к каждой из таблиц ? Может проще выбрать две даты и сравнить 
2. В первом sum() есть, а group by нет? Странно ...
__________________
The time was broken ...
а зачем там group by ? id --это, насколько я понимаю, первичный ключ. По чему группировать-то?
__________________
webdesign 4ever
По чему суммируют по тому и группируют, обычно ...
__________________
The time was broken ...
Там group by не нужен.
polo добавил 26-02-2004 в 20:15:57:
Пришел к выводу что лучше всего делать два запроса, это бвстрее всего, по крайней мере SQL, конечно же потом для обработки результатов потребуется больше времени от пхп но это в любом случае компенсируется. А вот во втором случае я не представляю себе как сделать одним запросом.
Представьте, если в первом варианте написать запрос как SELECT MIN(a.date), a.score, MIN(b.date) FROM tbl1 a, tbl2 b GROUP BY a.date, b.date то для получения данных требуется 63 секунды.
__________________
Всегда есть решение.
quote:В большинстве случаев - да. Но я пишу, - раньше опускать было нельзя и я привык. А теперь:
Там group by не нужен.
quote:
If you use a group function in a statement containing no GROUP BY clause, it is equivalent to grouping on all rows
__________________
The time was broken ...
| Формат времени GMT. Текущее время 10:58. | Показаны 6 сообщений на этой странице |
Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.