Сообщение Re[2]: подсчитать кол-во уникальных значений без селекта от 10.04.2018 7:52
Изменено 10.04.2018 8:22 niXman
Re[2]: подсчитать кол-во уникальных значений без селекта
Здравствуйте, Milena, Вы писали:
M>Я не знаю, какой у вас PK на этой таблице. В идеале для долго работающих запросов нужен покрывающий индекс, чтобы запрос не обращался к PK вообще и брал всю инфу из индекса.
РК — id, тут он вообще не используется...
M>Можно попробовать ещё так — добавить позапрос, что сократить возврат количества данных, по которому работает distinct:
M>
да, для distinct сократит, но при этом селектит все [distr_id] для конкретной игры, коих миллионы...
т.е. этот способ самый долгий...
M>И ещё рекомендую проверить фрагментацию ваших индексов.
это что?
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>
да, для distinct сократит, но при этом селектит все distr_id для конкретной игры, коих миллионы...
т.е. этот способ самый долгий...
M>И ещё рекомендую проверить фрагментацию ваших индексов.
это что?
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>И ещё рекомендую проверить фрагментацию ваших индексов.
это что?