Я создаю веб-приложение для клиента, и у меня есть проблема с конкретным запросом 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 ускорился?»
Я просто не знаю, что на самом деле нужно сделать!
Сначала добавьте индекс как для order_header.order_no, так и для order_totals.order_no и убедитесь, что оба столбца имеют одинаковый тип.
Для других оптимизаций мы должны поговорить о данных.
Не забудьте обновить статистику
Попросите свою БД
добавить индекс для столбца 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