Как уменьшить стоимость на выбранной выписке? - PullRequest
2 голосов
/ 28 апреля 2011

У меня есть таблица в oracle 10g с 51 столбцом и 25 миллионами записей в ней.Когда я выполняю простой запрос на выборку для таблицы, чтобы извлечь 3 столбца, я получаю слишком высокую цену около 182 тыс.Поэтому мне нужно уменьшить эффект стоимости.Есть ли возможный способ уменьшить его?

Запрос:

select a,b,c
from X

a - символ
b - varchar2
c - varchar2

TIA

Ответы [ 3 ]

3 голосов
/ 02 мая 2011

В таких случаях сложно дать хороший совет, не зная, зачем вам нужно запросить 25 миллионов записей.Как говорит @Ryan, обычно у вас будет предложение WHERE;или, возможно, вы извлекаете результаты в другую таблицу или что-то в этом роде?

Индекс покрытия (т. е. через a, b, c), вероятно, будет единственным способом повлиять на производительность - запросзатем выполните быстрое полное сканирование индекса и получите гораздо больше записей на каждый извлеченный блок.

2 голосов
/ 28 апреля 2011

Что ж ... если вы знаете, что вам нужно только подмножество этих значений, добавление предложения WHERE, очевидно, очень поможет. Если вам действительно нужны все 25 миллионов записей, и таблица должным образом проиндексирована, то я бы сказал, что на самом деле вы мало что можете сделать.

0 голосов
/ 24 августа 2011

Да, лучше рассказать о цели выбора, как сказал Джеффри Кемп.

Если выбрано обычное значение, вам просто нужно указать индекс для ваших полей, который в основном вы можете сделать, предоставить статистику таблицы по индексу (DBMS_STATS.GATHER_TABLE_STATS), проверить статистику каждого поля, чтобы убедиться, что ваш индекс верен (Читать: http://bit.ly/qR12Ul).

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

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