1

編集済み:クエリは機能しますが、私のローカルホスト マシンでは実行に 1 分以上かかりました。確かに、私のローカルホストではテーブルがかなり大きい (それぞれ約 8000 行) ですが、本番環境では、テーブルはそれぞれ 25,000 行以上になる可能性があります。これを最適化してそれほど時間がかからないようにする方法はありますか?コメントの 1 つに示されているように、両方のテーブルにインデックスが付けられています。

jos_eimcart_customers_addresses と jos_eimcart_customers の 2 つのテーブルがあります。Customers テーブルからすべてのレコードを取得し、addresses テーブルから利用可能な住所情報を含めたいと考えています。私はかなり普通の左外部結合クエリだと思っていたものを持っていますが、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
4

2 に答える 2

4

group by 句が必要です。

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
于 2010-12-28T20:31:16.170 に答える
0

クエリに問題はありません(カウントがあなたの言うとおりであると仮定します)。サーバーで何か他のことが起こっています。

ロックを待っている可能性はありますか?

于 2010-10-21T19:48:46.877 に答える