Форум сетевых администраторов
Показаны 6 сообщений на этой странице

Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- MySQL (http://netadmin.ws/forum/forumdisplay.php?forumid=40)
-- Оптимизация запросов (http://netadmin.ws/forum/showthread.php?threadid=7957)


Помещено polo 25-02-2004 в 14:12:

Оптимизация запросов

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

__________________
Всегда есть решение.


Помещено RaZEr 25-02-2004 в 23:48:

1. А сколько времени выполняются запросы отдельно к каждой из таблиц ? Может проще выбрать две даты и сравнить

2. В первом sum() есть, а group by нет? Странно ...

__________________
The time was broken ...


Помещено zverek 26-02-2004 в 00:29:

а зачем там group by ? id --это, насколько я понимаю, первичный ключ. По чему группировать-то?

__________________
webdesign 4ever


Помещено RaZEr 26-02-2004 в 00:33:

По чему суммируют по тому и группируют, обычно ...

__________________
The time was broken ...


Помещено polo 26-02-2004 в 20:12:

Там 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 секунды.

__________________
Всегда есть решение.


Помещено RaZEr 26-02-2004 в 21:48:

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.