2012-07-10 52 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