Ich bin Junior Ruby-MySQL-Programmierer und ich möchte wissen, wie ich meine Abfrage (gespeicherte Prozedur) schnell machen. .Wie zu meiner gespeicherten Prozedur machen es schnell und schön ... (Wählen Sie. Wählen Sie. Wählen Sie ..)
hier ist mein Stored Procedure und ich bin mit SQL_CACHE .. aber ich bin mir nicht sicher .. der Cache schnell mein Verfahren macht ..: (
DROP PROCEDURE IF EXISTS GET_AV //
CREATE PROCEDURE GET_AV()
BEGIN
DECLARE OVERALL FLOAT ;
DECLARE MALE FLOAT ;
DECLARE FEMALE FLOAT ;
DECLARE UNDER25 FLOAT ;
DECLARE ABOVE25 FLOAT ;
DECLARE UNDER25MALE FLOAT ;
DECLARE UNDER25FEMALE FLOAT ;
DECLARE ABOVE25MALE FLOAT ;
DECLARE ABOVE25FEMALE FLOAT ;
DECLARE CNT FLOAT;
#AVERAGE OVERALL
select SQL_CACHE avg(r.frq) as AVG_OVERALL INTO OVERALL from tbl_survey as s inner join tbl_respondent as r on s.s_id = r.s_id;
#AVERAGE MALE
select SQL_CACHE avg(r.frq) as AVG_MALE INTO MALE from tbl_survey as s inner join tbl_respondent as r on s.s_id = r.s_id WHERE GENDER = 1;
#AVERAGE FEMALE
select SQL_CACHE avg(r.frq) as AVG_FEMALE INTO FEMALE from tbl_survey as s inner join tbl_respondent as r on s.s_id = r.s_id WHERE GENDER = 2;
#AVERAGE UNDER25
select SQL_CACHE avg(r.frq) as AVG_UNDER_25 INTO UNDER25 from tbl_survey as s inner join tbl_respondent as r on s.s_id = r.s_id where AGE <= 25;
#AVERAGE ABOVE25
select avg(r.frq) as AVG_ABOVE_25 INTO ABOVE25 from tbl_survey as s inner join tbl_respondent as r on s.s_id = r.s_id where AGE >= 25;
#AVERAGE UNDER 25 & MALE
select SQL_CACHE avg(r.frq) as AVG_UNDER_25_MALE INTO UNDER25MALE from tbl_survey as s inner join tbl_respondent as r on s.s_id = r.s_id WHERE AGE <= 25 AND GENDER = 1;
#AVERAGE UNDER 25 & FEMALE
select SQL_CACHE avg(r.frq) as AVG_UNDER_25_FEMALE INTO UNDER25FEMALE from tbl_survey as s inner join tbl_respondent as r on s.s_id = r.s_id WHERE AGE <= 25 AND GENDER = 2;
#AVERAGE ABOVE25 & MALE
select SQL_CACHE avg(r.frq) as AVG_ABOVE_25_MALE INTO ABOVE25MALE from tbl_survey as s inner join tbl_respondent as r on s.s_id = r.s_id where AGE >=25 AND GENDER = 1;
#AVERAGE ABOVE25 & FEMALE
select SQL_CACHE avg(r.frq) as AVG_ABOVE_25_FEMALE INTO ABOVE25FEMALE from tbl_survey as s inner join tbl_respondent as r on s.s_id = r.s_id WHERE AGE >= 25 AND GENDER = 2;
SELECT OVERALL,MALE,FEMALE,UNDER25 ,ABOVE25 , UNDER25MALE,UNDER25FEMALE ,
ABOVE25MALE ,ABOVE25FEMALE;
END //
glücklicherweise jetzt nicht zu seinem langsamen .. aber ich möchte wissen, wie man es immer schneller und schöner code way macht :(
The [Code Review Stapelaustausch] (http://codereview.stackexchange.com/) kann ein angemessener Ort für diese Anforderung sein. –