У меня есть приложение PHP, которое извлекает информацию о заказе на основе отсканированного/введенного номера заказа для целей заказа. Мы используем Pervasive SQL, но синтаксис идентичен MS SQL.Оптимизация запросов SQL (Pervasive)
У меня есть несколько небольших запросов, используемых для разбивки предметов комплекта на элементы компонентов, которые вызываются по мере необходимости, но они просты и быстры для выполнения. Моя проблема - наш основной запрос, в который вложена самая необходимая информация. Это быстро для большинства заказов, поскольку они относительно небольшие (1-15 предметов или около того). Моя проблема связана с большими заказами (например, с оптовой торговлей), которые могут быть более 100 предметов.
Я понимаю, что чем больше информации понадобилось, тем больше времени потребуется для выполнения запроса, но я надеюсь, что в моем запросе есть место, чтобы оптимизировать его дальше.
Кто-нибудь видит что-либо в следующем запросе, который я могу оптимизировать, чтобы ускорить работу для больших заказов?
SELECT
oeordh.orduniq,
oeordh.customer,
oeordh.ordnumber,
oeordh.orddate,
oeordh.salesper1,
oeordd.orduniq,
oeordd.item,
oeordd.pickseq,
oeordd.location,
oeordd.origqty,
arcus.idcust,
arcus.idgrp
FROM oeordh
INNER JOIN oeordd ON oeordh.orduniq = oeordd.orduniq
INNER JOIN arcus ON oeordh.customer = arcus.idcust
WHERE
oeordh.ordnumber = '".$_POST['barcode']."'
ORDER BY oeordd.pickseq`
Что скажет вам план запроса (через 'explain')? –
Убедитесь, что у вас есть индексы для всех столбцов соединения, на 'oeordh.ordnumber' и на' oeordd.pickseq'. Остальное зависит от мощности вашей базы данных/сервера. – MicSim
две точки: ** 1. ** похоже, что есть инъекция; пожалуйста, начните использовать подготовленные заявления. ** 2. ** ваше соглашение об именах ужасно –