我应该使用超过76,000条记录的正确MySQL语句是什么?

时间:2013-10-21 02:53:19

标签: php mysql sql join inner-join

我有两张桌子,我想加入。我想为这两个表执行INNER JOIN以获得我想要的结果,但它似乎没有工作。每次我运行查询时,我只是得到一个加载...通知,显示时间太长,几分钟后,我收到此消息:

  

处理请求中的错误。错误代码500.内部服务器错误。

基本上我希望得到这种格式的结果:

  • 姓名姓,电话号码
  • 订阅的订户(订户状态) - 订阅日期。

ex。)期望的结果:

Jane Doe, 082 980 9514
Home Loan Applications (Active) - 17/07/2013
Credit Report (Free Report) (Unsubscribed) 12/06/2013

以下是示例表的链接: 的 Tables

您会注意到Jane Doe订阅了两个列表(房屋贷款申请和信用报告),因此结果中列出了两个列表。然后,她已经取消订阅信用报告,这就是为什么旁边有(取消订阅)的原因。

这是我使用的SQL语句:

SELECT emailaddress, subscribedate, unsubscribed 
FROM `interspire_subscriber` 
INNER JOIN `interspire_customfield` ON interspire_subscriber.subscriberid = 
                                       interspire_customfield.subscriberid

我不知道为什么会收到错误。有没有办法只用mySQL来实现这个目的?或者我还会在PHP中做些什么来获得这个?

由于76,000多条记录,该脚本的执行速度似乎太慢了。

更新:正如所建议的那样,我已将两个表上的subscriberids设置为索引,并且查询工作正常。目前我使用这个mysql语句:

SELECT interspire_customfield.subscriberid, interspire_customfield.fname,
interspire_customfield.lname, interspire_customfield.phone, emailaddress,
subscribedate, unsubscribed, interspire_customfield.listid, listname
FROM`interspire_subscriber` INNER JOIN `interspire_customfield` ON
interspire_subscriber.subscriberid = interspire_customfield.subscriberid

但它仍然没有列出用户订阅的所有列表。

0 个答案:

没有答案