ОК, я не могу понять, какой индекс у меня должен быть в "TBL_PHOTOS", чтобы этот запрос выполнялся быстро. В настоящее время занимает около 0,8 секунд с 50000 строк в PH, 50000 в PL, 300 в R1 и 100 в R2.
Если я удаляю предложение ORDER BY, запрос выполняется быстро и занимает <0,05 секунды. </p>
Кстати, в 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)
Спасибо!