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

Я создаю веб-приложение для клиента, и у меня есть проблема с конкретным запросом 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) и без него происходит мгновенно.

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

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

«Эй, не могли бы вы сделать A на столе B, чтобы C ускорился?»

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

0

Решение

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

1

Другие решения

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

добавить индекс для столбца 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
-1

По вопросам рекламы [email protected]