【问题标题】:What combination of columns should index have to speed up the query?索引应该有哪些列组合来加快查询速度?
【发布时间】:2016-12-22 21:32:55
【问题描述】:
UPDATE feedback_aggregated_fact a 
  JOIN 
     ( SELECT MAX(feedbackpercentagescore_for_respondent) overallmax_scored
            , MIN(feedbackpercentagescore_for_respondent) overallmin_scored
            , AVG(feedbackpercentagescore_for_respondent) overallavg_scored
            , ROUND(stddev(feedbackpercentagescore_for_respondent)) overallst_dev
            , ROUND(variance(feedbackpercentagescore_for_respondent)) overallvarian
            , MAX(tot_que_cat_score) cat_max_scored
            , MIN(tot_que_cat_score) cat_min_scored
            , AVG(tot_que_cat_score) cat_avg_scored
            , ROUND(stddev(tot_que_cat_score)) cat_st_dev
            , ROUND(variance(tot_que_cat_score)) cat_varian
            , MAX(tot_que_score) max_scored
            , MIN(tot_que_score) min_scored
            , AVG(tot_que_score) avg_scored
            , STDDEV(tot_que_score) st_dev
            , VARIANCE(tot_que_score) varian
            , feedbackname
            , fdf.feedback_id
            , faculty_id
            , frf.que_category
            , frf.queid  
         FROM feedback_details_fact fdf 
         JOIN feedback_response_fact frf 
           ON frf.feedback_fact_id = fdf.entity_id 
          AND fdf.latest_flag='Y' 
          AND frf.answer_rowstate != -1 
        WHERE fdf.feedback_entity_type_id IN (1,7,8) 
          AND tot_que_score IS NOT NULL 
        GROUP 
           BY feedback_id
            , faculty_id
            , que_category
            , queid
            ) b 
    ON b.faculty_id = a.faculty_id 
   AND b.feedback_id = a.feedback_id 
   AND a.question_category = b.que_category 
   AND a.question_id = b.queid
   SET a.feedback_max_scored = b.overallmax_scored
     , a.feedback_min_scored = b.overallmin_scored
     , a.feedback_avg_scored = b.overallavg_scored
     , a.feedback_st_dev = overallst_dev
     , a.feedback_variance = b.overallvarian
     , a.quescat_max_scored = b.cat_max_scored
     , a.quescat_min_scored = b.cat_min_scored
     , a.quescat_avg_scored = b.cat_avg_scored
     , a.quescat_st_dev = cat_st_dev
     , a.quescat_variance = b.cat_varian
     , a.ques_max_scored = b.max_scored
     , a.ques_min_scored = b.min_scored
     , a.ques_avg_scored = b.avg_scored
     , a.ques_st_dev = st_dev
     , a.ques_vaiance = b.varian  
 WHERE type_row = 'feedback';

【问题讨论】:

  • 欢迎来到 Stack Overflow!请拨打tour 并阅读How to Ask 以了解我们对这里问题的期望。请注意,我们不提供从头开始的编码服务。请告诉我们您已经尝试过什么,它是如何失败的,我们或许可以提供帮助。
  • 我已经使用了以下索引:ALTER TABLE feedback_details_fact ADD KEY ix3(feedback_entity_type_id,feedback_id,quest_category_id,queid,faculty_id,subject_id); ALTER TABLE feedback_details_fact ADD KEY ix2(feedback_entity_type_id,feedback_id,feedback_window_id,quest_category_id,queid,faculty_id,subject_id); ALTER TABLE feedback_response_fact ADD KEY ix3(feedback_id,que_category,queid,tot_que_cat_score,tot_que_score); ALTER TABLE feedback_response_fact ADD KEY ix4(feedback_id,feedback_window_id,que_category,queid,tot_que_cat_score,tot_que_score);
  • 我什至不会尝试阅读
  • 此查询不可能返回有效结果,因为 GROUP BY 子句中缺少几个非聚合列。
  • 在不知道tot_que_score在哪个表的情况下无法回答。

标签: mysql performance optimization


【解决方案1】:

创建表feedback_response_fact ( entity_id int(20) 无符号 NOT NULL AUTO_INCREMENT, org_id int(10) 默认为空, feedback_fact_id int(20) 无符号默认空值, feedback_fact_dcnid int(20) 无符号默认空值, feedback_id int(20) 无符号默认空值, feedback_dcnid int(20) 无符号默认空值, feedback_detail_id bigint(19) 默认为空, feedback_detail_dcnid int(20) 无符号默认空值, feedback_window_id int(20) 无符号默认空值, uniquekey bigint(11) 无符号默认空值, uniquekeyStatus varchar(20) 默认为空, responded varchar(20) 默认为空, feedback_answers_id int(20) 无符号默认空值, feedback_answers_dcnid int(20) 无符号默认空值, que_category int(20) 无符号默认空值, groupid int(20) 无符号默认空值, que_type_id int(20) 无符号默认空值, queid int(20) 无符号默认空值, ansoptionid int(20) 无符号默认空值, ansOptionScore int(20) 无符号默认空值, userid int(20) 无符号默认空值, customerid int(12) 默认为空, customerFirstName varchar(128) 默认为空, customerMiddleName varchar(128) 默认为空, customerLastName varchar(128) 默认为空, customerEmailID varchar(128) 默认为空, user_type_id int(20) 无符号默认空值, user_type varchar(20) 默认为空, respondent_student_id int(20) 无符号默认空值, respondent_student_Fact_entity_id int(20) 无符号默认空值, respondent_employee_id int(20) 无符号默认空值, respondent_employee_Fact_entity_id int(20) 无符号默认空值, anstext_Obj varchar(500) 默认为空, anstext_Subj 文字, feedback_responded_date 日期默认为空, mailsenddate 日期默认为空, feedbackpercentagescore_for_respondent int(20) 无符号默认空值, question_score_For_respondent int(20) 无符号默认空值, answer_is_active char(10) 非空, answer_rowstate int(10) 非空, answer_logged_date 日期时间默认为空, answer_last_updated_date 日期时间默认为空, mart_date 日期时间默认为空, site_id bigint(19) 默认为空, tot_que_cat_score int(20) 无符号默认空值, tot_que_score int(20) 无符号默认空值, feedback_entity_mapping_id int(20) 无符号默认空值, 主键 (entity_id), 键idx_feedback_user_id (userid), 键idx_feedback_fact_id (feedback_fact_id), 键idx_feedback_id (feedback_id), 键idx_feedback_detail_id (feedback_detail_id), 键idx_feedback_window_id (feedback_window_id), 键idx_feedback_answers_id (feedback_answers_id), 键idx_que_category (que_category), 键idx_groupid (groupid), 键idx_queid (queid), 密钥idx_userid (userid)

) ENGINE=InnoDB AUTO_INCREMENT=373426 默认字符集=latin1

创建表feedback_details_fact ( entity_id int(20) 无符号非空 AUTO_INCREMENT, feedback_id int(20) 无符号默认空值, feedback_dcnid int(20) 无符号默认空值, feedbackname varchar(252) 默认为空, open_from_date 日期默认为空, open_to_date 日期默认为空, closed_permanently char(10) 默认为空, form_type_id int(10) 无符号默认空值, form_type_name varchar(30) 默认为空, feedbackURL varchar(252) 默认为空, feedback_window_id int(20) 无符号默认空值, windowname varchar(252) 默认为空, windowstartdate 日期时间默认为空, windowenddate 日期时间默认为空, window_end_hr int(20) 无符号默认空值, window_end_min int(20) 无符号默认空值, window_start_hr int(20) 无符号默认空值, window_start_min int(20) 无符号默认空值, feedback_entity_mapping_id int(20) 无符号默认空值, feedback_entity_id int(20) 无符号默认空值, feedback_entity_type_id int(20) 无符号默认空值, entity_type_name varchar(252) 默认为空, faculty_id int(20) 无符号默认空值, faculty_name varchar(500) 默认为空, employee_no varchar(225) 默认为空, site_id int(20) 无符号默认空值, site_name varchar(225) 默认为空, site_code varchar(20) 默认为空, batch_id int(20) 无符号默认空值, batch_name varchar(252) 默认为空, batch_code varchar(252) 默认为空, resource_type_id int(20) 无符号默认空值, resource_type_name varchar(500) 默认为空, resource_type_code varchar(100) 默认为空, service_id int(20) 无符号默认空值, service_name varchar(500) 默认为空, service_code varchar(500) 默认为空, resource_group_id int(20) 无符号默认空值, resource_group_name varchar(500) 默认为空, resource_group_code varchar(20) 默认为空, slot_id int(20) 无符号默认空值, timetable_id int(20) 无符号默认空值, subject_id int(20) 无符号默认空值, show_feedback varchar(10) 默认为空, quest_category_id int(20) 无符号默认空值, quest_group_id int(20) 无符号默认空值, ques_type_Id int(20) 无符号默认空值, question_type_name varchar(252) 默认为空, queid int(20) 无符号默认空值, is_mandatory char(10) 默认为空, quesequence int(20) 无符号默认空值, ansoption int(20) 无符号默认空值, option_sequence int(20) 无符号默认空值, optionScore int(20) 无符号默认空值, ques_max_score int(20) 无符号默认空值, feedback_max_score int(20) 无符号默认空值, fedback_max_group_score int(20) 无符号默认空值, fedback_max_category_score int(20) 无符号默认空值, feedback_is_active char(10) 非空, feedback_rowstate int(20) 默认为空, latest_flag char(10) 非空, active_flag char(10) 默认为空, rowstate int(20) 默认为空, questionmapping_active_flag char(10) 默认为空, questionmapping_rowstate int(20) 默认为空, questionmapping_last_updated_date 日期时间默认为空, questionmapping_logged_date 日期时间默认为空, questionmapping_logged_by varchar(252) 默认为空, entitymapping_logged_date 日期时间默认为空, entitymapping_logged_by int(20) 无符号默认空值, entitymapping_is_active char(10) 默认为空, entitymapping_is_rowstate int(20) 默认为空, entitymapping_last_updated_date 日期时间默认为空, optionmapping_last_updated_date 日期时间默认为空, optionmapping_logged_date 日期时间默认为 NULL, optionmapping_rowstate int(20) 默认为空, optionmapping_is_active char(10) 默认为空, mart_date 日期时间默认为空, anonymous char(1) 默认 'N', activity_id int(20) 无符号默认空值, faculty_for_slot_id int(20) 无符号默认空值, master_group_id int(20) 无符号默认空值, group_id int(20) 无符号默认空值, 主键 (entity_id), 键idx_feedback_id (feedback_id), 键idx_feedback_window_id (feedback_window_id), 键idx_feedback_entity_mapping_id (feedback_entity_mapping_id), 键idx_feedback_entity_id (feedback_entity_id), 键idx_feedback_entity_type_id (feedback_entity_type_id), 键idx_quest_category_id (quest_category_id), 键idx_quest_group_id (quest_group_id), 键idx_queid (queid), 键idx_ansoption (ansoption) ) ENGINE=InnoDB AUTO_INCREMENT=169407 默认字符集=latin1

【讨论】:

  • 这两个表是用来更新表feedback_aggregated_fact
  • 我只是想知道这种更新表格的方式是否正确......因为它需要时间
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-28
  • 2011-11-16
  • 1970-01-01
  • 2021-08-31
相关资源
最近更新 更多