powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / distinct и другие неприятности
9 сообщений из 9, страница 1 из 1
distinct и другие неприятности
    #34735439
Vassoz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Появилась необходимость разобраться с PostgreSQL.
Я начинаю понимать что переход с MySQL бдует очень болезненный.
Версия PostgreSQL 7.3.15 поставленная с пакета
Комп: Core 2 duo 1.8 с 2 гигами оперативы под FreeBDS 6.2
Вопрос:
Есть таблица "a" с полем "b" в которой всего 1.5 млн. записей.
Я хочу сделать
select distinct(b) from a; - 22 сек.
select count(distinct(b)) from a; - 9 сек.
А у уникальных значений всего 500.
Попытки строить индексы по b: btree и hash.
Я вот не понимаю: что индекс никак не помагает в этой операции?

ОФТОП:
Да и вообще count, который пробегает все записи - что это за бред!?
Или автоинкримент через сиквенсы и некствал.
А max и min который не использует индескы!?
Где удобство!? Мы уже 21 веке, когда корабли бороздят просторы космотра, и в свет выходит Microsoft surface но PostgreSQL по моему забыли где-то в прошлом веке!
Я посотроил пару ключей, ключей но не один из них мне не дал хоть какой-то прирост, хотя в одном случае explain мне сказал что мы юзаем индекс!
Может есть что-то не сильно длинное почитать об этих всех недочетах и как их обходить!?
...
Рейтинг: 0 / 0
distinct и другие неприятности
    #34735458
Thamerlan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторМы уже 21 веке, когда корабли бороздят просторы космотра, и в свет выходит Microsoft surface...

а кто-то ещё умудряется ставить PostgreSQL 7.3 .15 ...
...
Рейтинг: 0 / 0
distinct и другие неприятности
    #34735471
Thamerlan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы еще в 8 Oracle'е TIMESTAMPы поищите ...
...
Рейтинг: 0 / 0
distinct и другие неприятности
    #34735496
st_serg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VassozДа и вообще count, который пробегает все записи - что это за бред!?
так сделано, как обходить это в поиск по форуму/мейлинг листам/гуглу

VassozИли автоинкримент через сиквенсы и некствал.
Чем вам сиквенсы не угодили? (в оракле они живут уже сколько лет и есть не просят)

VassozА max и min который не использует индескы!?
сейчас уже используют вроде (не проверял специально)

VassozPostgreSQL 7.3.15
...
Где удобство!? Мы уже 21 веке, когда корабли бороздят просторы космотра, и в свет выходит Microsoft surface но PostgreSQL по моему забыли где-то в прошлом веке!
Мы уже в 21 веке, а вы до сих пор 7.х ветку пользуете. ССЗБ.
...
Рейтинг: 0 / 0
distinct и другие неприятности
    #34735553
Funny_Falcon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VassozЯ хочу сделать
select distinct(b) from a; - 22 сек.
select count(distinct(b)) from a; - 9 сек.

Попробуй:
Код: plaintext
1.
2.
select b from a group by b;
select count(*) from (select b from a group by b) t;
...
Рейтинг: 0 / 0
distinct и другие неприятности
    #34735559
Vassoz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
st_sergДа и вообще count, который пробегает все записи - что это за бред!?
так сделано, как обходить это в поиск по форуму/мейлинг листам/гуглу
Да я полистал. Это уже в разделе офтоп написал я.
st_sergЧем вам сиквенсы не угодили? (в оракле они живут уже сколько лет и есть не просят)
Просто сравненивая с MySQL...
st_serg
Мы уже в 21 веке, а вы до сих пор 7.х ветку пользуете. ССЗБ.
Моя б воля... Сами понимаете, не от хорошей жизни. Я как раз базу буду мингрировать в постгре посвежее. Хоть обманите меня что там все хорошо :-)
...
Рейтинг: 0 / 0
distinct и другие неприятности
    #34735662
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VassozЕсть таблица "a" с полем "b" в которой всего 1.5 млн. записей.
Я хочу сделать
select distinct(b) from a; - 22 сек.
select count(distinct(b)) from a; - 9 сек.
А у уникальных значений всего 500.
Попытки строить индексы по b: btree и hash.
Я вот не понимаю: что индекс никак не помагает в этой операции?Не помогает. Можно ускорить через plpgsql, смотри http://sql.ru/forum/actualthread.aspx?tid=392601#3745890 .
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
create or replace function f_test()
  returns setof test
  language 'plpgsql'
  as '
    declare
      r test;
    begin
      select * into r from test order by val, id limit 1;
      while r.val is not null loop
        return next r;
        select * into r from test where val>r.val order by val, id limit 1;
      end loop;
      return;
    end;
';
...
Рейтинг: 0 / 0
distinct и другие неприятности
    #34735773
Vassoz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Funny_Falcon
Попробуй:
Код: plaintext
1.
2.
select b from a group by b;
select count(*) from (select b from a group by b) t;

Я до этого догшел своими размышлениями и сразу проверил.
Индекс не пользует.
Тянет послдовательность и сортит потом.
...
Рейтинг: 0 / 0
distinct и другие неприятности
    #34738120
Funny_Falcon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати: VassozОФТОП:
Да и вообще count, который пробегает все записи - что это за бред!?

А вы почитайте документацию к MySQL InnoDB в разделе оптимизации - тоже самое - очень не советуют делать select count(*) from table - ибо тоже версионник.
VassozА max и min который не использует индескы!?

Версия 8.1.9:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
EXPLAIN select min(client_id), max(client_id)
from only voicet_back.voicet_finished;
"Result  (cost=1.38..1.39 rows=1 width=0)"
"  InitPlan"
"    ->  Limit  (cost=0.00..0.69 rows=1 width=4)"
"          ->  Index Scan using voicet_finished_ix_client on voicet_finished  (cost=0.00..1563676.67 rows=2268625 width=4)"
"    ->  Limit  (cost=0.00..0.69 rows=1 width=4)"
"          ->  Index Scan Backward using voicet_finished_ix_client on voicet_finished  (cost=0.00..1563676.67 rows=2268625 width=4)"
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / distinct и другие неприятности
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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