2012-07-10 67 views
0

我对使用SQL很陌生,我试图运行一个查询,比较两个独立表中的两个值。我已经对正在使用的列进行了索引,但我不完全确定索引是如何工作的。我将它嵌入到PHP中,当我尝试运行查询时,它现在需要很长时间(有时甚至超时)。这两个表每个都有大约250k行,所以它不应该是太大的查询。这里是我的代码:在SQL查询中正确使用索引

$users1 = mysql_num_rows(mysql_query("SELECT DISTINCT idtracker.uuid 
    FROM idtracker, download_tracker 
    WHERE idtracker.uuid = download_tracker.pluginId 
    && idtracker.date > (NOW() - (2000000))", $con)); 

我不知道,如果它是非常有效的比较两个行直接像我在这里做。如果我能够了解我可以做些什么来提高查询速度,那么这将非常有帮助。

感谢 -Ryan

+0

您是否尝试过使用连接? – 2012-07-10 00:59:23

回答

1

之前,你可以做任何实际测试/优化,你需要修复查询:

idtracker.date > (NOW() - (2000000)) 

是错误的。

如果您idtracker.dateDATE型或DATETIME的,你想将其与另一日期(NOW()减去的东西),你需要使用mysql DATE_ADD功能或类似的东西。

+0

我的日期字段目前是时间戳类型。我在网上查找,似乎每个使用DATE_ADD的人都使用DATE或DATETIME类型。使用TIMESTAMP类型的查询以我想要的方式工作,我将这种工作更改为DATE或DATETIME更有效/更值得? – Raj3m8 2012-07-10 01:59:23

+0

@ Raj3m8不,TIMESTAMP很好,但是你不能只是减去一个整数,你需要使用de mysql的日期/时间函数。 – jeroen 2012-07-10 12:53:54