好的,我無法確定我應該在「TBL_PHOTOS」上使用此查詢來快速運行的索引。目前PH值爲50,000行,PL爲50,000,R1爲300,R2爲100。找不到我需要這個mysql查詢的索引 - 請幫忙?
如果我刪除了ORDER BY子句,那麼查詢就會很快,需要花費< 0.05秒。
以下是在MySQL的方式:
SELECT PH.tTaken, PH.nPhotoPK, PH.sFilename
FROM TBL_PHOTOS PH
LEFT JOIN TBL_PHOTO_LINKS PL ON PH.nPhotoPK = PL.nPhotoFK
LEFT JOIN TBL_RACES1 R1 ON R1.nRacePK = PH.nRace1FK
LEFT JOIN TBL_RACES2 R2 ON R2.nRacePK = PH.nRace2FK
WHERE PL.nPhotoLinkPK IS NULL
ORDER BY PH.tAdded DESC
LIMIT 0,100
的目的是給拉了回來尚未被鏈接到任何東西的100張最近上傳的照片。 TBL_RACES1 & TBL_RACES2是一個很好的理由,兩個單獨的表,所以我不能改變這一點。照片將始終屬於R1 或 R2中的一個實體,從來都不屬於這兩個實體。
道歉,如果這是不好的SQL由於某種原因,這不是我的強項。我甚至不知道你需要哪些信息來幫助我,所以如果我留下了一些重要的問題,請問。
我必須設置該表已經幾個指標,但在解釋聲明,我得到
possible_keys: (Null)
key: (null)
ref: (null)
謝謝!
謝謝你,將其更改爲: SELECT Q.tTaken,Q.nPhotoPK,Q.sFilename FROM (SELECT PH.tTaken,PH.nPhotoPK,PH.sFilename,PH.nRace1FK,PH.nRace2FK \t FROM TBL_PHOTOS PH \t \t LEFT JOIN TBL_PHOTO_LINKS PL ON PH.nPhotoPK = PL.nPhotoFK \t WHERE PL.nPhotoLinkPK IS NULL \t \t ORDER BY PH.nPhotoPK DESC \t LIMIT 0,60)問 LEFT JOIN TBL_RACES R1在R1.nRacePK上= Q.nRace1FK LEFT JOIN TBL_RACES R2 ON R2.nRacePK = Q.nRace2FK 似乎已經成功了。這就是你的意思? – Codemonkey 2010-11-08 22:41:53
我在這裏錯過了什麼,不知道如何粘貼/格式代碼 \t in \t這個 \t評論框! – Codemonkey 2010-11-08 22:44:49
好的,這並不完全正常,因爲我減少了我詢問的查詢。更大的問題是我有「ORDER BY col1 ASC,col2 DESC」。我現在知道MySQL *無法應付這種情況,而且我必須創建一個「反向」列才能解決這個問題。垃圾! – Codemonkey 2010-11-08 23:17:48