2013-05-21 5 views
0

У меня есть таблица [ID, ITEM_NAME, ITEM_PRICE, ITEM_STATUS, ITEM_TYPE, ITEM_OWNER, ITEM_DATE]Граф над большим набором записей в БД

Приложение может запросить таблицу с любым количеством условий поиска, как с пунктом дата и/или владелец товар и т.п.

в результирующем, мне также нужно получать отсчеты по различным статусом в ITEM_STATUS.

Его часто вызывают таймауты, когда я пытаюсь получить подсчеты по статусу.

Как этот случай обычно обрабатывается в приложениях большого объема. Скажи мне письмо. У меня есть счет того, сколько из них находится в папке «Входящие», сколько читается/не сообщается/отправляется, а что нет ... почти мгновенно. Как можно достичь такого опыта?

+0

Вы можете попробовать добавить индексы отдельных столбцов + идентификатор, как и в (ITEM_STATUS, ID), (ITEM_NAME, ID) и т.д. Я предлагаю добавить столбец ID для индексов, потому что я не знаю, сколько различных значения могут существовать для определенного столбца, а индекс в столбце с несколькими отдельными значениями может привести к медленному запуску DELETE. Поделитесь и наслаждайтесь. –

+0

@BobJarvis Не повлияет ли это на вставки? Они окажутся слишком медленными. – Sripaul

+1

Я не верю, что это вызовет проблемы с производительностью. У меня были таблицы поиска, где каждый столбец таблицы (около 40 или 50 столбцов, если я правильно помню) имел отдельный индекс. Производительность была прекрасная. (Мы построили сложную систему для обновления таблицы поиска в фоновом режиме, а затем выбросили ее, когда обнаружили, что она не нужна). За более чем 20 лет работы с реляционными базами данных я не могу вспомнить ситуацию, когда индексы вызвали проблему с производительностью на INSERT или любой другой операции, поэтому я не рекомендую беспокоиться об этом. Поделитесь и наслаждайтесь. –

ответ

0

Помимо индексирования и индексов растровых изображений наиболее гибкими и эффективными для такого рода вещей, если вы можете справиться с проблемами параллелизма при их поддержании, рассмотрите материализованные представления, чтобы охватить наиболее распространенные уровни агрегации.

Определение многоуровневого материализованных представления могут дать вам почти мгновенное время отклика, и даже обеспечить эффективное индексирование HAVING положения.