Информация об изменениях

Сообщение Re[2]: подсчитать кол-во уникальных значений без селекта от 10.04.2018 7:52

Изменено 10.04.2018 8:22 niXman

Re[2]: подсчитать кол-во уникальных значений без селекта
Здравствуйте, Milena, Вы писали:

M>Я не знаю, какой у вас PK на этой таблице. В идеале для долго работающих запросов нужен покрывающий индекс, чтобы запрос не обращался к PK вообще и брал всю инфу из индекса.

РК — id, тут он вообще не используется...

M>Можно попробовать ещё так — добавить позапрос, что сократить возврат количества данных, по которому работает distinct:


M>
M>SELECT COUNT(DISTINCT t1.distr_id)
M>FROM
M>(  SELECT distr_id 
M>   FROM mytable 
M>   WHERE game_id=33) AS t1
M>WHERE t1.distr_id>=44;
M>


да, для distinct сократит, но при этом селектит все [distr_id] для конкретной игры, коих миллионы...
т.е. этот способ самый долгий...

M>И ещё рекомендую проверить фрагментацию ваших индексов.

это что?
Re[2]: подсчитать кол-во уникальных значений без селекта
Здравствуйте, Milena, Вы писали:

M>Я не знаю, какой у вас PK на этой таблице. В идеале для долго работающих запросов нужен покрывающий индекс, чтобы запрос не обращался к PK вообще и брал всю инфу из индекса.

РК — id, тут он вообще не используется...

M>Можно попробовать ещё так — добавить позапрос, что сократить возврат количества данных, по которому работает distinct:


M>
M>SELECT COUNT(DISTINCT t1.distr_id)
M>FROM
M>(  SELECT distr_id 
M>   FROM mytable 
M>   WHERE game_id=33) AS t1
M>WHERE t1.distr_id>=44;
M>


да, для distinct сократит, но при этом селектит все distr_id для конкретной игры, коих миллионы...
т.е. этот способ самый долгий...

M>И ещё рекомендую проверить фрагментацию ваших индексов.

это что?