Not the most efficient as it makes more queries than needed, quite easy to optimize if needed. I initially write it as a simple abstraction for a single table, but started reusing it more and more so ...