많은 복잡한 쿼리가 있으며 그 결과는 MySQL 뷰에 저장됩니다. 문제는 MySQL 뷰가 성능면에서 어려움을 겪고 있다는 것입니다. 크론 채워 user_reports
테이블에 쿼리를 할 때MySQL은 cron 작업을 사용하거나 테이블을 사용하여 테이블을 만듭니다.
DROP TABLE user_reports;
CREATE TABLE user_reports
SELECT col1, col2, col3 FROM
/** COMPLEX QUERY **/
;
지금, 쿼리가 거의 걸릴 :
는 I의 의견이 채워 것과 동일한 데이터 표준 테이블을 채우는 cron 작업을 설정 동일한 시간대에 비해을 쿼리하는 데 10 분의 1이 걸립니다.
이 방법이 일반적인 방법입니까? 분명히 CRON 작업이 실행될 때마다 서버에 약간의 부담이 있으며 이는 데이터를 사용할 수 없음을 의미합니다. live.
시간
view_user_reports
= 0.018 초
를 조회하는 데 걸리는 user_reports
= 0.002 초
시간을 조회 촬영이 모두 말했다, 응용 프로그램 코드에서 실행해야 실행 0.018 초 정도 걸립니다 어쩌면 쿼리, 뷰에 저장되는 것이 아니라? 나는 cron-driven 방법뿐만 아니라 확장 할 것이라고 생각하지 않지만.
기본적으로 여러 테이블의 다양한 조인의 결과 인 뷰가 있습니다. 그런 다음 뷰를 쿼리하면 18 밀리 초가 걸리므로 만족스럽지 않으므로 정확하게 수행하기로 결정 했습니까? 어디에서 데이터로 채워지는 새 테이블을 만드시겠습니까?어떻게 채웠 니? 보고서에서 쿼리에 대해 EXPLAIN을 실행하여 병목 상태를 확인 했습니까? 조인 된 테이블을 쿼리하는 것은 복잡한 WHERE 절이있는 단일 테이블을 쿼리하는 것보다 항상 느립니다. –