Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-11279

There are difference explain in SELECT query and UPDATE query.

    XMLWordPrintable

Details

    • Bug
    • Status: Closed (View Workflow)
    • Major
    • Resolution: Not a Bug
    • 10.0.20
    • N/A
    • Optimizer
    • None
    • CentOS 6.7

    Description

      There are different query in update and select query.

      1) UPDATE QUERY

      "id"	"select_type"	"table"	"type"	"possible_keys"	"key"	"key_len"	"ref"	"rows"	"Extra"
      "1"	"SIMPLE"	"TB_LI_GERP_SEW_SHIP"	"range"	"TB_LI_GERP_SEW_SHIP_N04,TB_LI_GERP_SEW_SHIP_N05,TB_LI_GERP_SEW_SHIP_N02,TB_LI_GERP_SEW_SHIP_N07,TB_LI_GERP_SEW_SHIP_N01,TB_LI_GERP_SEW_SHIP_N06,TB_LI_GERP_SEW_SHIP_N08,TB_LI_GERP_SEW_SHIP_N09,TB_LI_GERP_SEW_SHIP_N11,TB_LI_GERP_SEW_SHIP_N12,TB_LI_GERP_SEW_SHIP_N13,TB_LI_GERP_SEW_SHIP_N15"	"TB_LI_GERP_SEW_SHIP_N06"	"110"	\N	"1"	"Using where"
       
      explain
      UPDATE /* AllocationExportShip.updateSEWShip */ 
       	TB_LI_GERP_SEW_SHIP
         SET PRCS_STATUS = 'Y'
           , PRCS_MESSAGE = 'SUCCESS'
           , LAST_UPDATE_DATE = NOW()
           , LAST_UPDATE_USER_ID = 'PG_LD_GERP_DAILYOUT3'
       WHERE CORP_TYPE =  'LGEKR'
         AND DC_CD = 'F01'
         AND PRCS_STATUS IN ('N','E')
         AND PG_YMD = '2016-10-20 00:00:00.0'
         AND CONTAINER_NO = 'ZCSU8646091'
         AND INTERFACE_ID = '1651217'
      

      2) SELECT QUERY

      "id"	"select_type"	"table"	"type"	"possible_keys"	"key"	"key_len"	"ref"	"rows"	"Extra"
      "1"	"SIMPLE"	"TB_LI_GERP_SEW_SHIP"	"ref"	"TB_LI_GERP_SEW_SHIP_N04,TB_LI_GERP_SEW_SHIP_N05,TB_LI_GERP_SEW_SHIP_N02,TB_LI_GERP_SEW_SHIP_N07,TB_LI_GERP_SEW_SHIP_N01,TB_LI_GERP_SEW_SHIP_N06,TB_LI_GERP_SEW_SHIP_N08,TB_LI_GERP_SEW_SHIP_N09,TB_LI_GERP_SEW_SHIP_N11,TB_LI_GERP_SEW_SHIP_N12,TB_LI_GERP_SEW_SHIP_N13,TB_LI_GERP_SEW_SHIP_N15"	"TB_LI_GERP_SEW_SHIP_N06"	"110"	"const,const,const,const,const"	"1"	"Using index condition; Using where"
       
      explain  
      select * from TB_LI_GERP_SEW_SHIP
       WHERE CORP_TYPE =  'LGEKR'
         AND DC_CD = 'F01'
         AND PRCS_STATUS IN ('N','E')
         AND PG_YMD = '2016-10-20 00:00:00.0'
         AND CONTAINER_NO = 'ZCSU8646091'
         AND INTERFACE_ID = '1651217'
      
      

      Then, I change the original query to multi-update join query. This query belows.

      "id"	"select_type"	"table"	"type"	"possible_keys"	"key"	"key_len"	"ref"	"rows"	"Extra"
      "1"	"PRIMARY"	"<derived2>"	"ALL"	\N	\N	\N	\N	"2"	""
      "1"	"PRIMARY"	"B"	"eq_ref"	"PRIMARY"	"PRIMARY"	"4"	"A.pk_id"	"1"	""
      "2"	"DERIVED"	"TB_LI_GERP_SEW_SHIP"	"ref"	"TB_LI_GERP_SEW_SHIP_N04,TB_LI_GERP_SEW_SHIP_N05,TB_LI_GERP_SEW_SHIP_N02,TB_LI_GERP_SEW_SHIP_N07,TB_LI_GERP_SEW_SHIP_N01,TB_LI_GERP_SEW_SHIP_N06,TB_LI_GERP_SEW_SHIP_N08,TB_LI_GERP_SEW_SHIP_N09,TB_LI_GERP_SEW_SHIP_N11,TB_LI_GERP_SEW_SHIP_N12,TB_LI_GERP_SEW_SHIP_N13,TB_LI_GERP_SEW_SHIP_N15"	"TB_LI_GERP_SEW_SHIP_N06"	"110"	"const,const,const,const,const"	"1"	"Using where"
       
      EXPLAIN
      UPDATE
      	(
      	SELECT CORP_TYPE, DC_CD, PG_YMD, CONTAINER_NO, INTERFACE_ID, PRCS_STATUS, pk_id
      	FROM TB_LI_GERP_SEW_SHIP
      	 WHERE CORP_TYPE =  'LGEKR'
      	   AND DC_CD = 'F01'
      	   AND PRCS_STATUS IN ('N','E')
      	   AND PG_YMD = '2016-10-20 00:00:00.0'
      	   AND CONTAINER_NO = 'ZCSU8646091'
      	   AND INTERFACE_ID = '1651217'
      	) A 
      JOIN TB_LI_GERP_SEW_SHIP B ON (A.pk_id=B.pk_id)
      SET B.PRCS_STATUS = 'Y'
           , B.PRCS_MESSAGE = 'SUCCESS'
           , B.LAST_UPDATE_DATE = NOW()
           , B.LAST_UPDATE_USER_ID = 'PG_LD_GERP_DAILYOUT3'
      ;
      

      I attached create table ddl script. Why did make the difference?

      Attachments

        Activity

          People

            psergei Sergei Petrunia
            gks3117 sungwon.han
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Git Integration

                Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.