Usage and performance notes

LightQuery is highly optimized for long datasets with a small number of columns (< 100). The tradeoff is similar to the tradeoff between using StaticArrays and Arrays. It is strongly recommended to only select the columns you need before using LightQuery. Alternatively, you could use a package like DataFrames.

You can avoid most allocations in LightQuery by keeping your data pre-sorted. If your data is not pre-sorted, then the majority of run-time will likely be spent in sorting.

LightQuery requires that all of your columns have the same indices. The Rows constructor will check whether this is the case; to override these checks, use @inbounds.

LightQuery has trouble dealing with missing data represented as Union{Missing, T} due to performance issues in Base. Hopefully, these will get sorted out soon. In the mean-time, DataValues work.