Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите оптимизировать запрос / 7 сообщений из 7, страница 1 из 1
27.10.2008, 16:44
    #35618427
KaTaJIu3aToP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите оптимизировать запрос
Здравствуйте!
Есть запрос :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
SELECT * FROM (

SELECT province, count(order_id) AS order_count, sum(item_count) AS item_count
 FROM product_order AS po 
  LEFT JOIN account AS a USING(account_id) 
  LEFT JOIN user_roles AS ur ON (a.login=ur.user_name) 
  WHERE (a.login NOT IN ('client', 'test')) AND (role_name='ADMIN')
  GROUP BY province
) AS o

LEFT JOIN (

SELECT province, count(client_id) AS session_count, sum(length) AS sessions_length
                FROM client AS cl 
                LEFT JOIN account AS a USING(account_id) 
                LEFT JOIN user_roles AS ur ON a.login=ur.user_name 
                WHERE (a.login NOT IN ('client', 'test')) AND (role_name='ADMIN')
         GROUP BY province 
) AS cl USING(province)
Можно ли его как-то оптимизировать?
Спасибо за внимание.
...
Рейтинг: 0 / 0
27.10.2008, 16:55
    #35618460
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите оптимизировать запрос
MINI-FAQ по форуму

"к тормозящим запросам EXPLAIN ANALYZE"
...
Рейтинг: 0 / 0
27.10.2008, 17:20
    #35618540
KaTaJIu3aToP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите оптимизировать запрос
2 LeXa NalBat : спс за ссылку.

Запрос не тормозит, работает нормально. Проблема в его громоздкости и дублировании :
Код: plaintext
1.
2.
3.
  LEFT JOIN account AS a USING(account_id) 
  LEFT JOIN user_roles AS ur ON (a.login=ur.user_name) 
  WHERE (a.login NOT IN ('client', 'test')) AND (role_name='ADMIN')
Суть запроса : по провинциям получить информацию, такую как количество ордеров, количество сессий, ...

Описание таблиц:
product_order(order_id, item_count,..)
account(account_id, login, province..)
client(client_id, length, province..)
...
Рейтинг: 0 / 0
27.10.2008, 17:35
    #35618580
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите оптимизировать запрос
можно создать представление

Код: plaintext
1.
2.
3.
create view admin_and_not_client_test_account_user_roles as
  select * from account AS a USING(account_id) 
  LEFT JOIN user_roles AS ur ON (a.login=ur.user_name) 
  WHERE (a.login NOT IN ('client', 'test')) AND (role_name='ADMIN')

и визуально упростить запрос:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SELECT * FROM (

SELECT province, count(order_id) AS order_count, sum(item_count) AS item_count
 FROM product_order AS po 
  LEFT JOIN admin_and_not_client_test_account_user_roles
  GROUP BY province

) AS o LEFT JOIN (

SELECT province, count(client_id) AS session_count, sum(length) AS sessions_length
                FROM client AS cl 
                LEFT JOIN admin_and_not_client_test_account_user_roles
         GROUP BY province 

) AS cl USING(province)
...
Рейтинг: 0 / 0
27.10.2008, 19:47
    #35618921
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите оптимизировать запрос
KaTaJIu3aToP wrote:

> Можно ли его как-то оптимизировать?

у вас только один критерий поиска - (role_name='ADMIN')

Много у вас таких записей ?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
27.10.2008, 19:48
    #35618926
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите оптимизировать запрос
KaTaJIu3aToP wrote:

> Запрос не тормозит, работает нормально. Проблема в его громоздкости и
> дублировании :

Так что вы хотите тогда ? То, что вы сказали - это не большая проблема.
если запрос работает быстро.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
28.10.2008, 13:18
    #35620219
KaTaJIu3aToP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите оптимизировать запрос
Всем огромное спасибо, оставил запрос в начальном виде.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите оптимизировать запрос / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]