Главная :: Форум :: Web ClipArt :: Поиск :: Статистика :: Топ 10 :: Публикация :: Рекомендовать
netadmin.ws
Панель управления Регистрция свободна! Календарь Список пользователей Часто задаваемые вопросы Поиск по форуму Архив скриптов Главная   
Форум сетевых администраторов
Форум сетевых администраторов Форум сетевых администраторов » Базы данных » MySQL » Оптимизация запросов
Предыдущая тема     Следующая тема
Автор
Тема    Новая тема     Ответить на эту тему
polo
Администратор
Средний рейтинг: 4.77 | Оценок: 106
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: May 2001
Место проживания:
Публикаций: 4642
Статус: polo в оф-лайне
Оптимизация запросов [сообщение #61625]

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

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

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 25-02-2004 14:12
Нажмите сюда для просмотра профайла polo Отправить Персональное сообщение polo Посетить домашнию страничку polo! Найти сообщения от polo Добавить polo в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
RaZEr
Модератор
Средний рейтинг: 4.19 | Оценок: 16
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Mar 2002
Место проживания: Россия
Публикаций: 769
Статус: RaZEr в оф-лайне
[сообщение #61670]

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

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

__________________
The time was broken ...

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 25-02-2004 23:48
Нажмите сюда для просмотра профайла RaZEr Отправить Персональное сообщение RaZEr Найти сообщения от RaZEr Добавить RaZEr в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
zverek
Участник

Зарегистрирован: Feb 2004
Место проживания:
Публикаций: 48
Статус: zverek в оф-лайне
[сообщение #61672]

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

__________________
webdesign 4ever

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 26-02-2004 00:29
Нажмите сюда для просмотра профайла zverek Отправить Персональное сообщение zverek Найти сообщения от zverek Добавить zverek в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
RaZEr
Модератор
Средний рейтинг: 4.19 | Оценок: 16
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Mar 2002
Место проживания: Россия
Публикаций: 769
Статус: RaZEr в оф-лайне
[сообщение #61673]

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

__________________
The time was broken ...

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 26-02-2004 00:33
Нажмите сюда для просмотра профайла RaZEr Отправить Персональное сообщение RaZEr Найти сообщения от RaZEr Добавить RaZEr в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
polo
Администратор
Средний рейтинг: 4.77 | Оценок: 106
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: May 2001
Место проживания:
Публикаций: 4642
Статус: polo в оф-лайне
[сообщение #61721]

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

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

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 26-02-2004 20:12
Нажмите сюда для просмотра профайла polo Отправить Персональное сообщение polo Посетить домашнию страничку polo! Найти сообщения от polo Добавить polo в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
RaZEr
Модератор
Средний рейтинг: 4.19 | Оценок: 16
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Mar 2002
Место проживания: Россия
Публикаций: 769
Статус: RaZEr в оф-лайне
[сообщение #61738]

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 ...

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 26-02-2004 21:48
Нажмите сюда для просмотра профайла RaZEr Отправить Персональное сообщение RaZEr Найти сообщения от RaZEr Добавить RaZEr в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя



Формат времени GMT. Текущее время 09:59.
Новая тема   Ответить на эту тему [ Версия для печати Печать | Отправить эту страницу другу/знакомому! Отправить | Получать уведомления об обновлении этой темы Подписка ] Предыдущая тема     Следующая тема
Навигация по форуму:
Оценка темы:

Правила форума:
Вы не можете создавать новые темы.
Вы не можете отвечать на существующие темы.
Вы не можете прикреплять файлы.
Вы не можете редактировать свои сообщения.
HTML теги выкл.
Спец. код вкл.
Смайлики вкл.
[IMG] тег выкл.
 

Page generated in 0.00953507 seconds (44.48% PHP - 55.52% MySQL) with 26 queries.


  Главная :: Форум :: Web ClipArt :: Поиск :: Статистика :: Топ 10 :: Публикация :: Рекомендовать
©NetAdmin.ws, 2001-2026.
Powered by: vBulletin
Copyright ©2000, 2001, Jelsoft Enterprises Limited.