SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 11.08.2011 16:44:45

forlord
Участник
Зарегистрирован: 11.08.2011
Сообщений: 16

Проблема с обптимизацией таблицы count( DISTINCT)

Нужно посчитать количество уникальных производителей (vendor)
SELECT count( DISTINCT a.vendor ) AS model_cnt, a.category, a.vendor AS vendor, v.title AS vendor_title
FROM catalog a
INNER JOIN vendors v ON a.vendor = v.id
WHERE a.published =1
AND a.sold =0
GROUP BY a.vendor


id     select_type     table      type         possible_keys               key              key_len     ref                      rows           Extra
1     SIMPLE             a         ref            published,vendor,sold     sold              1             const                  329             Using where; Using filesort
1     SIMPLE             v         eq_ref       PRIMARY                     PRIMARY        4            inst18.a.vendor        1     

индексы на published, vendor, sold
как можно избавиться от  Using where; Using filesort

Отредактированно forlord (12.08.2011 08:08:19)

Неактивен

 

#2 11.08.2011 18:49:07

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Проблема с обптимизацией таблицы count( DISTINCT)

Добавте индекс на (sold, published, vendor)

Неактивен

 

#3 12.08.2011 07:40:41

forlord
Участник
Зарегистрирован: 11.08.2011
Сообщений: 16

Re: Проблема с обптимизацией таблицы count( DISTINCT)

индексы стоят на них

Неактивен

 

#4 12.08.2011 13:59:21

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Проблема с обптимизацией таблицы count( DISTINCT)

я говорю про составной индекс на три поля.

alter table catalog add index(sold, published, vendor);

Неактивен

 

#5 15.08.2011 07:48:04

forlord
Участник
Зарегистрирован: 11.08.2011
Сообщений: 16

Re: Проблема с обптимизацией таблицы count( DISTINCT)

Спасибо, самое то

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson