clintropolis commented on PR #13897:
URL: https://github.com/apache/druid/pull/13897#issuecomment-1460060352

   marking WIP because this results in a performance regression at times (but 
not always)
   
   Ran the numbers before this PR and while queries 28 is same-ish, and 29 are 
significantly slower, 30 and 31 are a fair bit faster before this change.
   ```
   Benchmark              (query)  (rowsPerSegment)  (storageType)  
(stringEncoding)  (vectorize)  Mode  Cnt     Score    Error  Units
   SqlBenchmark.querySql       28           5000000           mmap              
none        false  avgt    5   141.133 ±  3.026  ms/op
   SqlBenchmark.querySql       28           5000000           mmap     
front-coded-4        false  avgt    5   151.020 ±  6.796  ms/op
   SqlBenchmark.querySql       28           5000000           mmap    
front-coded-16        false  avgt    5   142.013 ±  1.157  ms/op
   SqlBenchmark.querySql       29           5000000           mmap              
none        false  avgt    5   877.378 ± 11.754  ms/op
   SqlBenchmark.querySql       29           5000000           mmap     
front-coded-4        false  avgt    5  1263.192 ± 12.325  ms/op
   SqlBenchmark.querySql       29           5000000           mmap    
front-coded-16        false  avgt    5  1483.152 ± 10.696  ms/op
   SqlBenchmark.querySql       30           5000000           mmap              
none        false  avgt    5   100.516 ±  4.728  ms/op
   SqlBenchmark.querySql       30           5000000           mmap     
front-coded-4        false  avgt    5   100.432 ±  2.805  ms/op
   SqlBenchmark.querySql       30           5000000           mmap    
front-coded-16        false  avgt    5    91.875 ±  0.999  ms/op
   SqlBenchmark.querySql       31           5000000           mmap              
none        false  avgt    5    22.473 ±  0.182  ms/op
   SqlBenchmark.querySql       31           5000000           mmap     
front-coded-4        false  avgt    5    19.557 ±  0.258  ms/op
   SqlBenchmark.querySql       31           5000000           mmap    
front-coded-16        false  avgt    5    18.795 ±  0.270  ms/op
   ```
   
   It turns out that for these queries some magic was happening for the case 
statements which resulted in native filters being used instead of expression 
filters, for example query 31 looks something like this in the native query
   
   ```
   {
     "type": "and",
     "fields": [
       {
         "type": "selector",
         "dimension": "dimSequential",
         "value": "1"
       },
       {
         "type": "selector",
         "dimension": "dimSequentialHalfNull",
         "value": null
       }
     ]
   },
   {
     "type": "and",
     "fields": [
       {
         "type": "selector",
         "dimension": "dimSequential",
         "value": "10"
       },
       {
         "type": "selector",
         "dimension": "dimSequentialHalfNull",
         "value": null
       }
     ]
   },
   {
     "type": "and",
     "fields": [
       {
         "type": "selector",
         "dimension": "dimSequential",
         "value": "100"
       },
       {
         "type": "selector",
         "dimension": "dimSequentialHalfNull",
         "value": null
       }
     ]
   },
   {
     "type": "in",
     "dimension": "dimSequentialHalfNull",
     "values": [
       "1",
       "10",
       "100"
     ]
   }
   ```
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to