优化查询 求高手 在线等谢谢

hujiefei 2013-01-08 04:37:44
sql 如下
select a.xx,
a.yy,
a.vv,
c.name,
(SELECT bci.DEBIT_ACCOUNT_BALANCE
FROM business_confirm_info bci
WHERE bci.application_id = a.application_id
ORDER BY BUSINESS_CONFIRM_INFO_ID DESC
LIMIT 1)
debitAccountBalance
from application a ,CUSTOMER C,
ORDER BY a.CLEARING_DATE DESC;
主要是那个子查询 因为里面的数据量过大导致查询非常慢 求指教 谢谢
...全文
244 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
hujiefei 2013-01-09
  • 打赏
  • 举报
回复
SELECT a.application_no,
       C.CUSTOMER_NO,
       C.NAME,
       (SELECT DEPOSITE_ACCOUNT
          FROM contract_info
         WHERE application_id = a.APPLICATION_ID)
          DEPOSITE_ACCOUNT,
       RPD.CYCLE_NUM,
       (SELECT CYCLES
          FROM repayment_plan
         WHERE REPAYMENT_PLAN_ID = RPD.REPAYMENT_PLAN_ID)
          TOTAL_CYCLES,
       RPD.CLEARING_DATE,
       RPD.TOTAL,
       RPD.PRINCIPAL,
       RPD.INTEREST,
       RPD.EXTEND_MONTH,
       l.advance_no,
       (SELECT if(c.type = 3, company_phone, mobile_phone)
          FROM contact_info
         WHERE contact_info_id = c.contact_info_id)
          phone_num,
       (SELECT name
          FROM branch
         WHERE BRANCH_ID = a.BRANCH_ID)
          BRANCH_NAME,
       (SELECT chinese_name
          FROM users
         WHERE user_id = a.CREDITOR_ID)
          CREDITOR_NAME,
       (SELECT p.PRODUCT_NAME
          FROM product p
         WHERE p.PRODUCT_ID = a.PRODUCT_ID)
          PRODUCT_NAME,
       (SELECT bci.DEBIT_ACCOUNT_BALANCE
          FROM business_confirm_info bci
         WHERE bci.application_id = a.application_id
        ORDER BY BUSINESS_CONFIRM_INFO_ID DESC
         LIMIT 1)
          debitAccountBalance
  FROM REPAYMENT_PLAN_DETAIL RPD,
       LOAN L,
       CUSTOMER C,
       application a,
       repayment r
 WHERE     r.application_id = l.application_id
       AND r.REPAYMENT_PLAN_DETAIL_id = rpd.REPAYMENT_PLAN_DETAIL_id
       AND RPD.application_id = L.APPLICATION_ID
       AND a.CUSTOMER_ID = C.CUSTOMER_ID
       AND L.APPLICATION_ID = a.APPLICATION_ID
       AND a.BANK_ID = 1
       AND RPD.CLEARING_DATE >= DATE('2012-01-01')
       AND RPD.CLEARING_DATE < DATE(adddate('2012-12-31', 1))
       AND a.APPLICATION_STATUS_ID = 13
ORDER BY RPD.CLEARING_DATE DESC
WWWWA 2013-01-09
  • 打赏
  • 举报
回复
引用 11 楼 hujiefei 的回复:
Lookup Error - MySQL Database Error: Subquery returns more than 1 row 建立了索引的、
你的SQL语句是什么?10楼?
hujiefei 2013-01-09
  • 打赏
  • 举报
回复
Lookup Error - MySQL Database Error: Subquery returns more than 1 row 建立了索引的、
WWWWA 2013-01-09
  • 打赏
  • 举报
回复
SELECT bci.DEBIT_ACCOUNT_BALANCE FROM business_confirm_info bci where not exists(select 1 from business_confirm_info where bci.application_id = application_id and bci.BUSINESS_CONFIRM_INFO_ID<BUSINESS_CONFIRM_INFO_ID) 需要多长时间,business_confirm_info在application_id、BUSINESS_CONFIRM_INFO_ID上建立复合索引没有? BUSINESS_CONFIRM_INFO_ID唯一?
hujiefei 2013-01-09
  • 打赏
  • 举报
回复
没人会嘛?求高手赐教
qq4540213 2013-01-09
  • 打赏
  • 举报
回复
把(SELECT bci.DEBIT_ACCOUNT_BALANCE FROM business_confirm_info bci WHERE bci.application_id = a.application_id ORDER BY BUSINESS_CONFIRM_INFO_ID DESC LIMIT 1) 拆开 之后用两个查询 把第一个的结果集 获取id 放到第二个去查绝对快
hujiefei 2013-01-08
  • 打赏
  • 举报
回复
居然直接有copy回来了、
珠海-天堂 2013-01-08
  • 打赏
  • 举报
回复
desc select a.xx, a.yy, a.vv, c.name, (SELECT bci.DEBIT_ACCOUNT_BALANCE FROM business_confirm_info bci WHERE bci.application_id = a.application_id ORDER BY BUSINESS_CONFIRM_INFO_ID DESC LIMIT 1) debitAccountBalance from application a ,CUSTOMER C, ORDER BY a.CLEARING_DATE DESC;
hujiefei 2013-01-08
  • 打赏
  • 举报
回复
引用 4 楼 zuoxingyu2012 的回复:
引用 1 楼 zuoxingyu2012 的回复: SQL code?12345explain SELECT bci.DEBIT_ACCOUNT_BALANCE FROM business_confirm_info bci WHERE bci.application_id = a.application_id ORDER BY BUSINES……
取最大的一条的BUSINESS_CONFIRM_INFO_ID 的 内容 比如 id 1 2 3 4 5 那么 取 第四条 的内容
hujiefei 2013-01-08
  • 打赏
  • 举报
回复
a,c 有连接的忘记写了
珠海-天堂 2013-01-08
  • 打赏
  • 举报
回复
引用 1 楼 zuoxingyu2012 的回复:
SQL code?12345explain SELECT bci.DEBIT_ACCOUNT_BALANCE FROM business_confirm_info bci WHERE bci.application_id = a.application_id ORDER BY BUSINESS_CONFIRM_INFO……
不是要看结果,看执行计划。注意EXPLAIN
rucypli 2013-01-08
  • 打赏
  • 举报
回复
from application a ,CUSTOMER C, a和c没有连接条件吗 自然连接?
hujiefei 2013-01-08
  • 打赏
  • 举报
回复
珠海-天堂 2013-01-08
  • 打赏
  • 举报
回复
explain SELECT bci.DEBIT_ACCOUNT_BALANCE
           FROM business_confirm_info bci
          WHERE bci.application_id = a.application_id
         ORDER BY BUSINESS_CONFIRM_INFO_ID DESC
          LIMIT 1;
看看什么结果

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧