Медленный запрос Oracle

0

Я создаю веб-приложение для клиента, и у меня есть проблема с конкретным SQL-запросом.

Запрос:

select order_header.order_no,
       order_header.purchase_order_no,
       order_header.entry_date,
       order_header.delivery_date,
       order_totals.total_quantity
from   order_header,
       order_totals
where  order_header.order_no = order_totals.order_no

У меня есть некоторые проблемы с устранением неполадок, и это:

where  order_header.order_no = order_totals.order_no

это проблема. SQL-запрос с этой строкой занимает 35 секунд (заставляет DataTables даже время от времени) и без него мгновенно.

Итак, я знаю проблему, но я не являюсь администратором базы данных, поэтому не знаю решения.

Это не моя база данных, поэтому решение, которое мне нужно отправить в DBA, сортировать, чтобы я мог продолжить работу. Что-то вроде

"Эй, не возражаете ли вы делать A на B, чтобы C ускорялся?"

Я просто не знаю, что на самом деле нужно сделать!

  • 3
    Вы исследовали план выполнения запроса? Есть ли индекс для order_header.order_no или order_totals.order_no ?
  • 0
    @SylvainLeroux Привет. Если посмотреть на список таблиц, который их администратор отправил в начале, то order_header.order_no имеет Unique Index но order_totals.order_no ничего не имеет ...
Показать ещё 2 комментария
Теги:
oracle8i

2 ответа

1

Сначала добавьте индекс как для order_header.order_no, так и для order_totals.order_no и проверьте, что оба столбца одного типа. Для других оптимизаций мы должны говорить о данных. Не забудьте обновить статистику

0

Попросите свою БД

добавьте индекс в столбец order_no в order_header и order_total

Это должно помочь с вашей текущей проблемой. Кроме того, найдите JOIN и измените свой запрос на использование синтаксиса JOIN.

 select order_header.order_no,
           order_header.purchase_order_no,
           order_header.entry_date,
           order_header.delivery_date,
           order_totals.total_quantity
    from   order_header 
    join   order_totals ON order_header.order_no = order_totals.order_no
  • 0
    Здравствуй. Они используют Oracle 8i, я думаю, что это невозможно или что-то в этом роде. Я помню кое-что о 8i. Спасибо за другой ответ :-)
  • 1
    Ух ты, старая версия Oracle ...
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню