【发布时间】:2011-04-28 19:35:19
【问题描述】:
已编辑:所以查询确实有效,但在我的 localhost 机器上运行需要一分钟。诚然,我的本地主机上的表要大得多(每个大约 8000 行),但在生产中,每个表可能有超过 25,000 行。有什么办法可以优化这个,所以它不会花很长时间?如其中一个 cmets 所示,两个表都已编入索引。
我有两个表,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
【问题讨论】:
-
表格的大小(以行为单位)是多少?有索引吗?
-
两者都有索引,并且两个表的行数都不超过 100 行。
-
看起来这个查询实际上已经使我们的数据库服务器崩溃了,尽管它正在处理已经被索引的非常小的表。我在更大的表上运行了更复杂的查询,那么这个特定的有什么问题?
标签: mysql outer-join