2014-11-13 5 views
0

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

Select emp_name, phone_number, emp_id from Employees where 
emp_dept = 100; 

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

В процессе обучения Oracle. Поэтому, пожалуйста, дайте мне знать, если будут ошибки.

Спасибо.

+0

indexes.indexes.indexes –

+0

Должен ли я поставить индекс на emp_dept? – chikkada

+1

@MitchWheat, действительно, действительно, правда? Что, если количество строк, соответствующих предикату 'emp_dept = 100', например, 5 миллионов? ;-) Тогда удачи OP с его администраторами баз данных, избивая его бейсбольным битом для того, чтобы сделать так много LIO. ;-) – nop77svk

ответ

1

С

я не позволил создать любой временной таблицы и индекс

тогда ваш только вариант, кажется, для запуска этого параллельно:

select --+ parallel(E,16) 
    emp_name, phone_number, emp_id 
from employees E 
where emp_dept = 100; 

И ваши полезны варианты, в зависимости от многих факторов ...

  • попросить ваш местный DBA добавить индекс для вас
  • спросить местный DBA реорганизовать таблицу для вас (разделов, кластеры)
  • попросить ваш местный DBA, чтобы создать на фиксацию быстро обновляемый запрос перезаписываемый MView для вас
  • спросить компанию, чтобы купить машину Exadata для вас
  • и т.д.
Смежные вопросы