Tek bir SQL sorgusunda Yüzde

0 Cevap php

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.

0 Cevap