Ben şu anda benim Sqlite3 veritabanına karşı kullanan iki hemen hemen aynı SQL sorguları var.
Find total count of matching records.
SELECT COUNT(runner.id)
FROM entry
JOIN runner ON runner.entry_id = entry.id
JOIN race ON race.id = entry.race_id
JOIN horse ON horse.id = entry.horse_id
WHERE STRFTIME('%Y-%m-%d', race.datetime) < :max_date AND
STRFTIME('%Y-%m-%d', race.datetime) >= :min_date AND
entry.trainer_id = :trainer_id AND
race.course_id = :course_id AND
race.type = :race_type
Find total count of matching records where x = y.
SELECT COUNT(runner.id)
FROM entry
JOIN runner ON runner.entry_id = entry.id
JOIN race ON race.id = entry.race_id
JOIN horse ON horse.id = entry.horse_id
WHERE STRFTIME('%Y-%m-%d', race.datetime) < :max_date AND
STRFTIME('%Y-%m-%d', race.datetime) >= :min_date AND
entry.trainer_id = :trainer_id AND
race.course_id = :course_id AND
runner.position = 1 AND
race.type = :race_type
Daha sonra PHP kodu x = y kayıtların kapalı yüzdesini hesaplamak. Nasıl aynı şey tek bir SQL sorgusu bir dönüş yüzdesi yapardınız?
EDIT: optimizasyon gelince, ben sadece daha aklı başında sırayla içine NEREDE koşullar etrafında açık ve bazı indeksler eklenir ve aşağı 17 saniye ile 0,1 saniye için var.