The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Оптимизация запроса GROUP BY"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы WEB технологии (Public)
Изначальное сообщение [ Отслеживать ]

"Оптимизация запроса GROUP BY"  
Сообщение от Urms email(ok) on 18-Ноя-07, 01:36 
Знатоки SQL! Нужна помощь в оптимизации то ли запроса, то ли базы данных.

В двух словах, есть база данных некоторых товаров, у каждого товара есть производитель (id) и кол-во таких товаров в наличии. Необходимо выдать общее количество разных товаров каждого производителя. Это, конечно практически книжный пример использования GROUP BY, но задача усложняятся тем, что записей в таблице миллионы и работает стандартное решение слишком медленно. Может, кто-нибудь знает какой-то хитрый вариант решения данной проблемы?

Заранее всем спасибо!

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Оптимизация запроса GROUP BY"  
Сообщение от Паша email(??) on 18-Ноя-07, 10:17 
Кроме group by id с вытаскиванием sum(count) ничего вроде и не сделать. Насколько медленно? Какая БД? Если есть возможность можно снапшот (Materialized View) оcвежать по расписанию. Динамика то у таблицы наверное небольшая в пределах допустимых погрешностей.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Оптимизация запроса GROUP BY"  
Сообщение от Urms email(ok) on 18-Ноя-07, 12:40 
>Кроме group by id с вытаскиванием sum(count) ничего вроде и не сделать.
>Насколько медленно? Какая БД? Если есть возможность можно снапшот (Materialized View)
>оcвежать по расписанию. Динамика то у таблицы наверное небольшая в пределах
>допустимых погрешностей.

Т.е. сделать какой-то кеш? Беда в том, что запрос с дополнительными условиями вроде категории товара и т.п. и от этого зависит кол-во. Все варианты не выйдет покешировать.

А работает это все достаточно медленно, чтобы быть слишком медленным для юзера. База данных -- MySQL

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Оптимизация запроса GROUP BY"  
Сообщение от tx2 on 18-Ноя-07, 15:41 
какой движок табличный (иннодб?)..
и как организована таблица и индексы в ней?

возможно создание дополнительных(и м/б избыточных) индексов по нескольким полям улучшит ситуацию...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Оптимизация запроса GROUP BY"  
Сообщение от Паша email(??) on 18-Ноя-07, 17:16 
>Необходимо выдать общее
>количество разных товаров каждого производителя.

Это понимается достаточно конкретно, и может быть кэшировано. Если Вам нужно что-то ещё, описывайте подробнее.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Оптимизация запроса GROUP BY"  
Сообщение от TimeKeeper (ok) on 04-Сен-08, 16:44 
Сталкнулся с похожей проблемой

Добавлены строки: 21057 (запрос занял 108.9304 сек.)
SQL-запрос:
INSERT IGNORE INTO temp2
SELECT page_graph.id_page_to
FROM page_graph
RIGHT JOIN temp1 ON ( temp1.id = page_graph.id_page_from ) ;

---------------------------------------

А SELECT:

строки 0 - 29 (4,629,563 всего, запрос занял 0.0004 сек.)
SQL-запрос:
SELECT page_graph.id_page_to
FROM page_graph
RIGHT JOIN temp1 ON ( temp1.id = page_graph.id_page_from ) ;


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Оптимизация запроса GROUP BY"  
Сообщение от TimeKeeper (ok) on 04-Сен-08, 16:45 
Сталкнулся с похожей проблемой

Добавлены строки: 21057 (запрос занял 108.9304 сек.)
SQL-запрос:
INSERT IGNORE INTO temp2
SELECT page_graph.id_page_to
FROM page_graph
RIGHT JOIN temp1 ON ( temp1.id = page_graph.id_page_from )

---------------------------------------

А SELECT:

строки 0 - 29 (4,629,563 всего, запрос занял 0.0004 сек.)
SQL-запрос:
SELECT page_graph.id_page_to
FROM page_graph
RIGHT JOIN temp1 ON ( temp1.id = page_graph.id_page_from )


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру