Я создаю веб-приложение для клиента, и у меня есть проблема с конкретным 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 ускорялся?"
Я просто не знаю, что на самом деле нужно сделать!
Сначала добавьте индекс как для 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
order_header.order_no
илиorder_totals.order_no
?order_header.order_no
имеетUnique Index
ноorder_totals.order_no
ничего не имеет ...