Быстрее 'выбрать отличные thing_id, thing_name из table1' в оракуле - PullRequest
6 голосов
/ 01 июня 2009

У меня есть этот запрос:

select distinct id,name from table1

Для данного идентификатора имя всегда будет одинаковым. Оба поля проиндексированы. Там нет отдельной таблицы, которая отображает идентификатор на имя. Таблица очень большая (10 миллионов строк), поэтому запрос может занять некоторое время.

Этот запрос очень быстрый, так как он проиндексирован:

select distinct name from table1

Аналогично этому запросу:

select distinct id from table1

Если я не могу изменить структуру базы данных (очень безопасное предположение), как лучше структурировать первый запрос производительности?

Изменить, чтобы добавить очищенную таблицу:


Name                           Null     Type
------------------------------ -------- ----------------------------
KEY                            NOT NULL NUMBER
COL1                           NOT NULL NUMBER
COL2                           NOT NULL VARCHAR2(4000 CHAR)
COL3                           VARCHAR2(1000 CHAR)
COL4                           VARCHAR2(4000 CHAR)
COL5                           VARCHAR2(60 CHAR)
COL6                           VARCHAR2(150 CHAR)
COL7                           VARCHAR2(50 CHAR)
COL8                           VARCHAR2(3 CHAR)
COL9                           VARCHAR2(3 CHAR)
COLA                           VARCHAR2(50 CHAR)
COLB                           NOT NULL DATE
COLC                           NOT NULL DATE
COLD                           NOT NULL VARCHAR2(1 CHAR)
COLE                           NOT NULL NUMBER
COLF                           NOT NULL NUMBER
COLG                           VARCHAR2(600 CHAR)
ID                             NUMBER
NAME                           VARCHAR2(50 CHAR)
COLH                           VARCHAR2(3 CHAR)

20 rows selected

Ответы [ 11 ]

0 голосов
/ 01 июня 2009

Вы можете попробовать это:

select id, max(name) from table1 group by id

Это наверняка использует индекс по id, но вы должны попробовать, если он работает быстро.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...