MYSQL:对返回意外结果的简单查询进行故障诊断

时间:2014-03-17 16:14:06

标签: mysql

我正试图找出我在这里缺少的东西,以及我应该把注意力集中在解决问题上的地方。我有两个表,每个表有两列。绝大多数但不是全部的Table1.symbol都在Table2.symbol中。

表1 -symbol -date

表2 -symbol -industry

我试图做的是没有工作,所以我正在尝试进行故障排除并确定我丢失线程的位置。在这一点上,我只是试图从下到上构建我的查询,但我无法得到我期望的结果。

首先,我运行了一些查询,以查看返回的内容。使用phpMyAdmin我得到以下内容:

SELECT * FROM Table1
  —> (38,290 total, Query took 0.0002 sec)

SELECT DISTINCT symbol FROM Table1
  —> (2,067 total, Query took 0.0016 sec)

SELECT * FROM Table2
  —> (7,072 total, Query took 0.0002 sec)

SELECT DISTINCT symbol FROM Table2
  -> (7,072 total, Query took 0.0011 sec)

SELECT * FROM Table1, Table 2
  —> (270,786,880, Query took 0.0002 sec)

问题1:

SELECT * FROM Table1, Table2 WHERE Table1.symbol = Table2.symbol
  (192 Total, Query took 0.0002) 

这只返回192,返回的结果集只有S到Z的记录(但不是全部)

问题2:

SELECT Table1.symbol, Table2.industry WHERE Table1.symbol = Table2.symbol
  —> (192 total, Query took 1.5174)

这也会返回192,但在返回结果之前会挂起超过一分钟。与问题1一样,这也仅限于S到Z(但不是全部)。

问题3:

SELECT DISTINCT Table1.symbol, Table2.industry WHERE Table1.symbol = Table2.symbol
   --> (times out)

任何有关我如何解决问题并解决问题的指导都将不胜感激。

[编辑添加上下文] 数据库架构:

表1:符号:varchar(6),日期:日期

表2:符号:varchar(6),行业:varchar(100)

由于缺乏声誉,我无法内联图片,并且仅限于2个链接,因此我会在评论中发布第三个,但是......

表1(alltimehigh)按日期排序以显示最新记录

http://i60.tinypic.com/29yqxow.png

Table2(symbolbase)与WHERE一起验证表1中最近的一个条目是否存在

http://i57.tinypic.com/20pqxvm.png

最终我的目标是实现:

SELECT alltimehigh.symbol, count(alltimehigh.symbol) as total, symbolbase.industry FROM alltimehigh, symbolbase WHERE DATE_SUB(CURDATE(), INTERVAL '20' DAY) <= Date AND alltimehigh.symbol = symbolbase.Symbol GROUP by alltimehigh.symbol ORDER BY count(alltimehigh.symbol) DESC

但是现在我只是想知道为什么我无法从Table1.symbol到Table2.symbol获得匹配Table2中表示的所有符号并将它们与关联的Table2.industry一起返回那个符号。

0 个答案:

没有答案