3
현재 SQLite3 데이터베이스와 거의 동일한 SQL 쿼리가 두 개 있습니다.단일 SQL 쿼리의 백분율
일치하는 레코드의 총 개수를 찾으십시오.
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
어디 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
I은 PHP 코드 X = Y 레코드 오프 비율을 계산한다. 단일 SQL 쿼리에서 동일한 결과를 반환하는 방법은 무엇입니까?
EDIT : 최적화와 관련하여 WHERE 조건을보다 정상적인 순서로 전환하고 일부 인덱스를 추가했으며 17 초에서 0.1 초로 감소했습니다. 그리고 PHP의 총에 의해 postionCount를 분할
SUM(CASE WHEN runner.position = 1 THEN 1 ELSE 0 END) as position1Count, COUNT(runner.id) as total
:
완벽한 :) 및 0.5 초 쿼리. 고마워요. –