Почему этот запрос левого внешнего соединения отказывается завершать в phpMyAdmin? - PullRequest
1 голос
/ 21 октября 2010

РЕДАКТИРОВАНИЕ: так что запрос работает, но на моем локальном хосте это заняло более минуты. По общему признанию таблицы на моем локальном хосте значительно больше (около 8000 строк в каждой), но в производственном процессе таблицы могут иметь более 25 000 строк в каждой. Есть ли способ оптимизировать это, чтобы это не заняло так много времени? Как указано в одном из комментариев, обе таблицы проиндексированы.

У меня есть две таблицы: jos_eimcart_customers_addresses и jos_eimcart_customers. Я хочу извлечь все записи из таблицы клиентов и включить информацию об адресе, если она доступна, из таблицы адресов. У меня есть, как мне показалось, довольно обычный запрос левого внешнего соединения, но в phpMyAdmin время ожидания истекает, хотя результатов не так много, которые следует искать. Кто-нибудь может указать, если я делаю что-то не так? Я не получаю ошибку MySQL.

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 outer join  jos_eimcart_customers_addresses a  
    on c.id = a.customer_id  
order by c.last_signin desc

Ответы [ 2 ]

4 голосов
/ 28 декабря 2010

Вам нужна группа по пунктам:

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 OUTER JOIN jos_eimcart_customers_addresses a ON c.id = a.customer_id 
GROUP BY 
  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 
ORDER BY c.last_signin DESC
0 голосов
/ 21 октября 2010

В вашем запросе нет ничего плохого (если считать, что вы говорите, как есть). Что-то еще происходит на вашем сервере.

Есть ли шанс, что он ожидает блокировки?

...