У меня есть две таблицы, jos_eimcart_customers_addresses и jos_eimcart_customers. Я хочу вытащить все записи из таблицы клиентов и включить адресную информацию, доступную из таблицы адресов. Запрос действительно работает, но на моей машине localhost потребовалось более минуты для запуска. На локальном хосте таблицы составляют около 8000 строк, но в процессе производства таблицы могут иметь до 25 000 строк. Есть ли способ оптимизировать это, так что это не займет много времени? Обе таблицы имеют индекс в поле id, который является первичным ключом. Есть ли какой-нибудь другой индекс, который мне нужно создать, чтобы это ускорилось? Должна ли таблица адресов иметь индекс в поле customer_id, так как это внешний ключ? У меня есть другие запросы к базе данных, которые схожи и работают на гораздо больших таблицах, быстрее.Как оптимизировать запрос левого соединения?
(отредактирован ADD:. Там может быть более чем один адрес записи для каждого клиента, поэтому customer_id не уникальное значение в таблице адресов)
select
c.firstname,
c.lastname,
c.email as customer_email,
a.email as address_email,
c.phone as customer_phone,
a.phone as address_phone,
a.company,
a.address1,
a.address2,
a.city,
a.state,a.zip,
c.last_signin
from jos_eimcart_customers c
left join jos_eimcart_customers_addresses a
on c.id = a.customer_id
order by c.last_signin desc
отредактирован ADD: Объяснить результаты
id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra
==========================================================================================
1 | SIMPLE | c | ALL | NULL | NULL| NULL |NULL |6175 |Using temporary; Using filesort
---------------------------------------------------------------------------------------
1 | SIMPLE | a | ALL | NULL | NULL| NULL |NULL |8111 |
WOW! Я добавил индекс на a.customer_id, и запрос пошел от 84 секунд до 0,0168 секунд. Большая разница! – EmmyS
FYI, я принимаю этот ответ по сравнению с Даррен только потому, что он пришел за 2 минуты раньше - оба имеют в основном тот же ответ, так что нет другого способа решить, кто победит! – EmmyS