Uploaded image for project: 'Couchbase Server'
  1. Couchbase Server
  2. MB-45273

[BP to 6.6.2] Primary index scan used with query with OR condition

    XMLWordPrintable

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 6.6.0, 6.6.1
    • 6.6.2
    • query
    • Untriaged
    • 1
    • Yes

    Description

      create primary index on default;

      create index ix1 on default(c1) where meta().id like "abc%";

      create index ix2 on default(c2) where meta().id like "abc%";

      create index ix3 on default(c3) where meta().id like "abc%";

       

      explain select * from default where meta().id like "abc%" and (c1 = 1 or c2 = 2 or c3 = 3);

       

      in 6.0 a union scan with ix1/ix2/ix3 is used, in 6.6.0 and later primary index scan is used. 

      Attachments

        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            Build couchbase-server-6.6.2-9579 contains query commit 6af8c88 with commit message:
            MB-45273 Favor UNION SCAN over PRIMARY SCAN

            build-team Couchbase Build Team added a comment - Build couchbase-server-6.6.2-9579 contains query commit 6af8c88 with commit message: MB-45273 Favor UNION SCAN over PRIMARY SCAN

            Verified on 6.6.2-9579

            cbq> explain select * from default where meta().id like "abc%" and (c1 = 1 or c2 = 2 or c3 = 3);
            {
                "requestID": "8b40e917-28cf-4a88-a531-706a922e6dec",
                "signature": "json",
                "results": [
                {
                    "plan": {
                        "#operator": "Sequence",
                        "~children": [
                            {
                                "#operator": "UnionScan",
                                "scans": [
                                    {
                                        "#operator": "IndexScan3",
                                        "index": "ix1",
                                        "index_id": "d277516edab8195c",
                                        "index_projection": {
                                            "primary_key": true
                                        },
                                        "keyspace": "default",
                                        "namespace": "default",
                                        "spans": [
                                            {
                                                "exact": true,
                                                "range": [
                                                    {
                                                        "high": "1",
                                                        "inclusion": 3,
                                                        "low": "1"
                                                    }
                                                ]
                                            }
                                        ],
                                        "using": "gsi"
                                    },
                                    {
                                        "#operator": "IndexScan3",
                                        "index": "ix2",
                                        "index_id": "139017fb29197a7d",
                                        "index_projection": {
                                            "primary_key": true
                                        },
                                        "keyspace": "default",
                                        "namespace": "default",
                                        "spans": [
                                            {
                                                "exact": true,
                                                "range": [
                                                    {
                                                        "high": "2",
                                                        "inclusion": 3,
                                                        "low": "2"
                                                    }
                                                ]
                                            }
                                        ],
                                        "using": "gsi"
                                    },
                                    {
                                        "#operator": "IndexScan3",
                                        "index": "ix3",
                                        "index_id": "bc86ce0502c77deb",
                                        "index_projection": {
                                            "primary_key": true
                                        },
                                        "keyspace": "default",
                                        "namespace": "default",
                                        "spans": [
                                            {
                                                "exact": true,
                                                "range": [
                                                    {
                                                        "high": "3",
                                                        "inclusion": 3,
                                                        "low": "3"
                                                    }
                                                ]
                                            }
                                        ],
                                        "using": "gsi"
                                    }
                                ]
                            },
                            {
                                "#operator": "Fetch",
                                "keyspace": "default",
                                "namespace": "default"
                            },
                            {
                                "#operator": "Parallel",
                                "~child": {
                                    "#operator": "Sequence",
                                    "~children": [
                                        {
                                            "#operator": "Filter",
                                            "condition": "(((meta(`default`).`id`) like \"abc%\") and ((((`default`.`c1`) = 1) or ((`default`.`c2`) = 2)) or ((`default`.`c3`) = 3)))"
                                        },
                                        {
                                            "#operator": "InitialProject",
                                            "result_terms": [
                                                {
                                                    "expr": "self",
                                                    "star": true
                                                }
                                            ]
                                        },
                                        {
                                            "#operator": "FinalProject"
                                        }
                                    ]
                                }
                            }
                        ]
                    },
                    "text": "select * from default where meta().id like \"abc%\" and (c1 = 1 or c2 = 2 or c3 = 3);"
                }
                ],
                "status": "success",
                "metrics": {
                    "elapsedTime": "20.599205ms",
                    "executionTime": "20.36905ms",
                    "resultCount": 1,
                    "resultSize": 4630
                }
            } 

            pierre.regazzoni Pierre Regazzoni added a comment - Verified on 6.6.2-9579 cbq> explain select * from default where meta().id like "abc%" and (c1 = 1 or c2 = 2 or c3 = 3 ); {     "requestID" : "8b40e917-28cf-4a88-a531-706a922e6dec" ,     "signature" : "json" ,     "results" : [     {         "plan" : {             "#operator" : "Sequence" ,             "~children" : [                 {                     "#operator" : "UnionScan" ,                     "scans" : [                         {                             "#operator" : "IndexScan3" ,                             "index" : "ix1" ,                             "index_id" : "d277516edab8195c" ,                             "index_projection" : {                                 "primary_key" : true                             },                             "keyspace" : "default" ,                             "namespace" : "default" ,                             "spans" : [                                 {                                     "exact" : true ,                                     "range" : [                                         {                                             "high" : "1" ,                                             "inclusion" : 3 ,                                             "low" : "1"                                         }                                     ]                                 }                             ],                             "using" : "gsi"                         },                         {                             "#operator" : "IndexScan3" ,                             "index" : "ix2" ,                             "index_id" : "139017fb29197a7d" ,                             "index_projection" : {                                 "primary_key" : true                             },                             "keyspace" : "default" ,                             "namespace" : "default" ,                             "spans" : [                                 {                                     "exact" : true ,                                     "range" : [                                         {                                             "high" : "2" ,                                             "inclusion" : 3 ,                                             "low" : "2"                                         }                                     ]                                 }                             ],                             "using" : "gsi"                         },                         {                             "#operator" : "IndexScan3" ,                             "index" : "ix3" ,                             "index_id" : "bc86ce0502c77deb" ,                             "index_projection" : {                                 "primary_key" : true                             },                             "keyspace" : "default" ,                             "namespace" : "default" ,                             "spans" : [                                 {                                     "exact" : true ,                                     "range" : [                                         {                                             "high" : "3" ,                                             "inclusion" : 3 ,                                             "low" : "3"                                         }                                     ]                                 }                             ],                             "using" : "gsi"                         }                     ]                 },                 {                     "#operator" : "Fetch" ,                     "keyspace" : "default" ,                     "namespace" : "default"                 },                 {                     "#operator" : "Parallel" ,                     "~child" : {                         "#operator" : "Sequence" ,                         "~children" : [                             {                                 "#operator" : "Filter" ,                                 "condition" : "(((meta(`default`).`id`) like \"abc%\") and ((((`default`.`c1`) = 1) or ((`default`.`c2`) = 2)) or ((`default`.`c3`) = 3)))"                             },                             {                                 "#operator" : "InitialProject" ,                                 "result_terms" : [                                     {                                         "expr" : "self" ,                                         "star" : true                                     }                                 ]                             },                             {                                 "#operator" : "FinalProject"                             }                         ]                     }                 }             ]         },         "text" : "select * from default where meta().id like \"abc%\" and (c1 = 1 or c2 = 2 or c3 = 3);"     }     ],     "status" : "success" ,     "metrics" : {         "elapsedTime" : "20.599205ms" ,         "executionTime" : "20.36905ms" ,         "resultCount" : 1 ,         "resultSize" : 4630     } }

            People

              pierre.regazzoni Pierre Regazzoni
              bingjie.miao Bingjie Miao
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes

                  PagerDuty