首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询优化左外部连接7个表- Server

查询优化左外部连接7个表- Server
EN

Stack Overflow用户
提问于 2017-03-13 16:25:03
回答 1查看 79关注 0票数 0

需要帮助更快的执行和优化为下面。

在所附的2幅图像中找到执行计划。

所有表格中的数据如下:

  • 连- 25行
  • warranty_period - 878行
  • company_claimtype - 216行
  • claim_type - 25行
  • 客户- 15980行
  • auto_handle - 25行
  • auto_handle_condition - 31行
  • PART_REQUIRED_RETURN - 4521行

下面的查询花费了将近12分钟的时间执行,它只包含上述所有表的左外部连接:

代码语言:javascript
复制
select
    company0_.ID as ID1_9_0_,
    warrantype1_.ID as ID1_36_1_,
    partsrequi2_.ID as ID1_20_2_,
    claimtype4_.ID as ID1_8_3_,
    autohandle5_.ID as ID1_4_4_,
    autohandle6_.ID as ID1_5_5_,
    customer7_.ID as ID1_14_6_,
    company0_.CREATED as CREATED2_9_0_,
    company0_.UPDATED as UPDATED3_9_0_,
    company0_.AUTO_REJECT_USER as AUTO_REJ4_9_0_,
    company0_.CLAIM_CREDIT_ORDER_HISTORY as CLAIM_CR5_9_0_,
    company0_.CLAIM_ORDER_HISTORY as CLAIM_OR6_9_0_,
    company0_.COMPANY_CODE as COMPANY_7_9_0_,
    company0_.COMPANY_NAME as COMPANY_8_9_0_,
    company0_.CONNECTED_TO_ERP as CONNECTE9_9_0_,
    company0_.DEFAULT_CUSTOMER_ID as DEFAULT16_9_0_,
    company0_.DATE_FORMAT as DATE_FO10_9_0_,
    company0_.DISPLAY_WORK_LOCATION as DISPLAY11_9_0_,
    company0_.DISTANCE_UNIT as DISTANC12_9_0_,
    company0_.ENABLE_SHIPPING_LABEL as ENABLE_13_9_0_,
    company0_.HANDLE_CREDIT_INVOICES as HANDLE_14_9_0_,
    company0_.RETURNS_PARTS_DAYS as RETURNS15_9_0_,
    warrantype1_.CREATED as CREATED2_36_1_,
    warrantype1_.UPDATED as UPDATED3_36_1_,
    warrantype1_.COMPANY_ID as COMPANY_8_36_1_,
    warrantype1_.PERIOD_CONSUMER as PERIOD_C4_36_1_,
    warrantype1_.PERIOD_PROFESSIONAL as PERIOD_P5_36_1_,
    warrantype1_.PRODUCT_GROUP as PRODUCT_6_36_1_,
    warrantype1_.PRODUCT_NO as PRODUCT_7_36_1_,
    warrantype1_.COMPANY_ID as COMPANY_8_36_0__,
    warrantype1_.ID as ID1_36_0__,
    partsrequi2_.CREATED as CREATED2_20_2_,
    partsrequi2_.UPDATED as UPDATED3_20_2_,
    partsrequi2_.COMPANY_ID as COMPANY_5_20_2_,
    partsrequi2_.PRODUCT_NO as PRODUCT_4_20_2_,
    partsrequi2_.COMPANY_ID as COMPANY_5_20_1__,
    partsrequi2_.ID as ID1_20_1__,
    claimtype4_.CREATED as CREATED2_8_3_,
    claimtype4_.UPDATED as UPDATED3_8_3_,
    claimtype4_.CATEGORY as CATEGORY4_8_3_,
    claimtype4_.CLAIM_TYPE as CLAIM_TY5_8_3_,
    claimtype4_.SORT_ORDER as SORT_ORD6_8_3_,
    claimtype4_.TEXT_KEY as TEXT_KEY7_8_3_,
    claimtypes3_.COMPANY_ID as COMPANY_2_10_2__,
    claimtypes3_.CLAIMTYPE_ID as CLAIMTYP1_10_2__,
    autohandle5_.CREATED as CREATED2_4_4_,
    autohandle5_.UPDATED as UPDATED3_4_4_,
    autohandle5_.[ACTION] as ACTION4_4_4_,
    autohandle5_.[ACTIVE] as ACTIVE5_4_4_,
    autohandle5_.[ASSIGN] as ASSIGN6_4_4_,
    autohandle5_.[COMPANY_ID] as COMPANY_8_4_4_,
    autohandle5_.[NAME] as NAME7_4_4_,
    autohandle5_.[COMPANY_ID] as COMPANY_8_4_3__,
    autohandle5_.ID as ID1_4_3__,
    autohandle6_.CREATED as CREATED2_5_5_,
    autohandle6_.UPDATED as UPDATED3_5_5_,
    autohandle6_.AUTO_HANDLE_ID as AUTO_HAN7_5_5_,
    autohandle6_.[OPERATOR] as OPERATOR4_5_5_,
    autohandle6_.[TYPE] as TYPE5_5_5_,
    autohandle6_.[VALUE] as VALUE6_5_5_,
    autohandle6_.AUTO_HANDLE_ID as AUTO_HAN7_5_4__,
    autohandle6_.ID as ID1_5_4__,
    customer7_.CREATED as CREATED2_14_6_,
    customer7_.UPDATED as UPDATED3_14_6_,
    customer7_.COMPANY_ADDRESS as COMPANY_4_14_6_,
    customer7_.STREET as STREET5_14_6_,
    customer7_.ZIPCODE as ZIPCODE6_14_6_,
    customer7_.COMPANY_ID as COMPANY_9_14_6_,
    customer7_.CUSTOMER_NO as CUSTOMER7_14_6_,
    customer7_.NAME as NAME8_14_6_ 
from
    COMPANY company0_ 
left outer join
    WARRANTY_PERIOD warrantype1_ 
        on company0_.ID=warrantype1_.COMPANY_ID 
left outer join
    PART_REQUIRED_RETURN partsrequi2_ 
        on company0_.ID=partsrequi2_.COMPANY_ID 
left outer join
    COMPANY_CLAIMTYPE claimtypes3_ 
        on company0_.ID=claimtypes3_.COMPANY_ID 
left outer join
    CLAIM_TYPE claimtype4_ 
        on claimtypes3_.CLAIMTYPE_ID=claimtype4_.ID 
left outer join
    AUTO_HANDLE autohandle5_ 
        on company0_.ID=autohandle5_.[COMPANY_ID] 
left outer join
    AUTO_HANDLE_CONDITION autohandle6_ 
        on autohandle5_.ID=autohandle6_.AUTO_HANDLE_ID 
left outer join
    CUSTOMER customer7_ 
        on company0_.DEFAULT_CUSTOMER_ID=customer7_.ID
EN

回答 1

Stack Overflow用户

发布于 2017-03-14 11:49:50

我发现特别奇怪的是,您从PART_REQUIRED_RETURN获得大约585 k记录,然后标记这些记录,但是当服务器添加AUTO_HANDLE数据时,情况突然增加到210万条记录。你确定你的加入考虑到了整个PK吗?正如您的查询现在看起来的那样,我假设ID是AUTO_HANDLE的PK,但是这些数字似乎与此相矛盾。添加AUTO_HANDLE_CONDITION数据时也会发生类似的情况。

最后,您将读取3.3M行,即大约4.5Gb的数据。我不认为你能指望把这个降低到几秒钟。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42768652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档