Чтобы получить счет из таблиц с огромным количеством данных - PullRequest
0 голосов
/ 28 февраля 2012

Я пытаюсь получить количество записей из таблицы с 40 миллионами записей.Мой запрос выглядит следующим образом:

Select count(*) from Employee 
            where code = '000111' and status = 'A' and rank = 'B'

Существует около 2-3 миллионов записей, которые удовлетворяют условию.Статус имеет только 2 значения (А и С), а ранг также имеет только два значения (А и В)

Добавлены индексы для столбцов «код», «статус» и «ранг», и все они VARCHAR,

Несмотря на это, приведенный выше запрос занимает много времени.

Есть ли способ быстро получить счет?

Обратите внимание, что мне просто нужно количество записей.

Редактировать: Подробности столбца

EMPLOYEE

CODE.       NOT NULL VARCHAR2(6) 
STATUS      NOT NULL VARCHAR2(1) 
RANK        NOT NULL VARCHAR2(1) 

Индексы:

CODE_IDX - Normal Index (For Code)
STATUS_IDX - BITMAP Index (For Status)
TARIFF_IDX - Normal Index  (For Tariff)

Ответы [ 2 ]

1 голос
/ 28 февраля 2012

Если таблица постоянно обновляется и вам нужно постоянно получать счетчик, я бы порекомендовал вам создать таблицу ключ / значение (если у вас ее еще нет), которая скорее будет хранить счет как запись в базе данных.чем получать счет каждый раз.То есть, если вам нужно, чтобы ваш запрос был быстрее ... это определенно ускорит его.Держите ключ первичным ключом в таблице, и вам не придется беспокоиться об индексации.Обновите пару ключ / значение, когда новая запись вставлена ​​или удалена путем вычитания или добавления 1 к значению.Затем просто периодически проверяйте свою ценность, получая счет таким же образом, как вы делаете это в кроне или каким-либо другим способом.

0 голосов
/ 28 февраля 2012

вы пробовали:

Select count(1) from Employee where code = '000111' and status = 'A' and rank = 'B'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...