Skip to content

Performance improvement with large table scans #141

Description

@abose

Currently, the scan APIs like getFromNonIndex and query API has significant performance issues when working with large tables of >1M rows and with paging. Observations:

measurements of pagination performance with scan

Number of rows in table

Row Count Size
1,194,515 2.8GB

image

measurement with an integer column

SELECT * FROM phcode_extensions_dev.extensionDetails order by idx limit 100000,100;
35016:19:52SELECT * FROM phcode_extensions_dev.extensionDetails order by idx limit 100000,100100 row(s) returned0.687 sec / 0.079 sec
35116:19:54SELECT * FROM phcode_extensions_dev.extensionDetails order by idx limit 100000,100100 row(s) returned0.719 sec / 0.062 sec
35216:26:44SELECT * FROM phcode_extensions_dev.extensionDetails order by idx limit 100000,100100 row(s) returned0.703 sec / 0.078 sec
35316:26:50SELECT * FROM phcode_extensions_dev.extensionDetails order by idx limit 100000,100100 row(s) returned0.703 sec / 0.078 sec

measurement with documentID

SELECT * FROM phcode_extensions_dev.extensionDetails order by documentID limit 100000,100;
35416:28:48SELECT * FROM phcode_extensions_dev.extensionDetails order by documentID limit 100000,100100 row(s) returned0.344 sec / 0.078 sec
35516:28:49SELECT * FROM phcode_extensions_dev.extensionDetails order by documentID limit 100000,100100 row(s) returned0.344 sec / 0.078 sec
35616:28:51SELECT * FROM phcode_extensions_dev.extensionDetails order by documentID limit 100000,100100 row(s) returned0.329 sec / 0.078 sec
35716:28:53SELECT * FROM phcode_extensions_dev.extensionDetails order by documentID limit 100000,100100 row(s) returned0.344 sec / 0.078 sec

measurement with using no order-by clause

38116:40:02SELECT * FROM phcode_extensions_dev.extensionDetails limit 100000,100100 row(s) returned0.343 sec / 0.266 sec
38216:40:04SELECT * FROM phcode_extensions_dev.extensionDetails limit 100000,100100 row(s) returned0.328 sec / 0.187 sec
38316:40:06SELECT * FROM phcode_extensions_dev.extensionDetails limit 100000,100100 row(s) returned0.344 sec / 0.141 sec
38416:40:12SELECT * FROM phcode_extensions_dev.extensionDetails limit 100000,100100 row(s) returned0.328 sec / 0.109 sec
  • investigate why the integer based index performs worse than a string based index, also investigate if there is a faster way to do this.
  • not using order by seems to offer the highest performance for duration, but worse fetch penalty in the tests

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions