优化查询Indexing, EXPLAINMysql

问题描述

根据另一位开发人员在 stackoverflow 上的建议,我更新了我的查询如下,但我仍然需要进一步优化它。有人可以指导我如何最好地将索引应用于查询。

见下面的查询:

SELECT a.id,a.user_unique_id,a.loan_location,a.ippis,a.tel_no,a.organisation,a.branch,a.loan_agree,a.loan_type,a.appr,a.sold,a.loan_status,a.top_up,a.current_loan,a.date_created,a.date_updated,c.loan_id,c.user_unique_id AS tu_user_unique_id,c.ippis AS tu_ippis,c.top_up_approved,c.loan_type AS tu_loan_type,c.dse,c.status,c.current_loan AS tu_current_loan,c.record_category,c.date_created AS tu_date_created,c.date_updated AS tu_date_updated 
FROM loan_applications_tbl a
LEFT JOIN topup_or_reapplication_tbl c
    ON a.ippis=c.ippis   
WHERE ((c.status IN ('pending','corrected','Rejected','Processing','Captured','Reviewed','top up') 
       AND MONTH(CURRENT_DATE) IN (MONTH(c.date_created),MONTH(c.date_updated) 
       AND YEAR(CURRENT_DATE) IN (YEAR(c.date_created),YEAR(c.date_updated)) 
       AND   c.current_loan='1' )) 
OR ( a.loan_status IN ('pending','top up')
     AND MONTH(CURRENT_DATE) IN (MONTH(a.date_created),MONTH(a.date_updated)) )
     AND YEAR(CURRENT_DATE) IN (YEAR(a.date_created),YEAR(a.date_updated)) 
     AND (a.current_loan='1' 
          OR (a.current_loan='0' 
              AND a.loan_status IN('Approved','Closed')))))

执行时间:53s

记录数:11000

使用mysql EXPLAIN给出如下截图:(如何最大化可能的keys列中的信息

EXPLAIN gives the screenshot below: (How do I maximise the information in the possible_keys column)

我已更新以下附加信息:

我在 c 和 a 之间使用 OR 的原因如下:

  1. a 是具有 66 列的父表,如果 a 上的新条目具有匹配/现有的 ippis({{ {1}})a 中的某些列被新条目中的数据更新/覆盖,而条目中的剩余数据作为新行插入 ac 不是在表 ippis 中唯一)。这是为了保留所有后续贷款请求的历史记录,同时不为冗余留出空间

  2. 在检索记录时,我需要大 c 子句使我能够检查 ORa 表的每个贷款记录的所有实例,其中 c列与我的 WHERE 子句中的参数匹配。

  3. status,date and current_loan 中总是会有完整的记录,但 a 中不会总是有记录,除非有更多的贷款请求需要相同的唯一 ID。 c 包含“谁是帐户人,例如通过唯一 ID”,以及第一笔贷款的附加/补充状态详细信息,随后,在第一笔贷款之后,“c”将是附加/补充状态具有相同唯一 ID 的实际贷款申请的详细信息

  4. 如果 "A" 是在 3 月 12 日创建的,并且在 3 月 16 日创建了一个新的 "c" 记录。 "A" 记录也会得到最后更新的标记为 3 月 16 日的记录,因为它有一个孩子,而新的 a 记录有它自己创建和更新的时间戳。 c 记录的 Updated 字段将为空/空,直到进行更改或存在 a 记录,c 记录的 Updated 字段将为空/空,直到有一些更改制作成 c 条记录

我希望这是可以理解的

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)