У меня есть следующие таблицы:медленных запросов Выполнение объединения нескольких таблиц
Parts
id int (idx)
partnumber varchar (idx)
accountnumber (idx)
enabled
RefUserGroup
id int (idx)
value varchar (idx)
Pdf < has about 15 columns I will list ones I am interested
in currently over 300,000's rows
id int (idx)
accountnumber varchar (idx)
customername varchar (idx)
Ref_UserGroup_Pdf
id
groupid FK (idx)
partsnumber (idx)
enable (idx)
Запрос: Это занимает около 47secs- 97 секунд для возврата данных.
SELECT p.partsnumber
,rug.`value` AS `group`
,pd.customername AS customer
FROM ref_groupid_to_pdf rgp
INNER JOIN ref_user_group rug ON rug.id = rgp.groupid
INNER JOIN parts p on rgp.partsnumber = p.partsnumber
LEFT JOIN pdf pd on p.accountnumber= pd.accountnumber
WHERE rug.groupid = 2
AND rug.groupid <> 1
ORDER BY customer;
Может ли кто-нибудь указать в правильном направлении, как оптимизировать этот запрос? Я знаю, что обычно мы помещаем индексы на один или несколько столбцов, но для этого я помещаю индекс в каждый столбец, но даже тогда он очень медленный.
Когда запрос присоединяется к таблице pdf, он становится очень медленным.
Обновлено запросов на основе предложений:
SELECT p.partsnumber
,rug.`value` AS `group`
,pd.customername AS customer
FROM ref_groupid_to_pdfid rgp
INNER JOIN ref_user_group_pdf rug ON rug.groupid = rgp.groupid
INNER JOIN parts p on rgp.partsnumber = p.partsnumber
INNER JOIN pdf_load pd on p.accountnumber = pd.accountnumber
WHERE rug.id = 2
GROUP BY rgp.partsnumber;
Что говорит 'explain select ....' вашего запроса? –
Я отправлю одну секунду. – Haris
@Harry Где находится 'igroupid' от ~? – Matt