Aggregating blocks from across a site

Permalink
Hi all, we've just finished our first site in Concrete5 which has been a pretty amazing experience all in all. Forgive me if this has been covered previously, but I was unable to find anything that covered this problem elsewhere...

I've built a fairly basic block that aggregates specific content from across the entire website (for example I have a block type called 'Concert' and I want this aggregation block to find all instances of the 'Concert' block in the entire site and pull them through into an ordered list).

As I say, this is my first C5 site, but as far as I can see the only way to find all the live blocks (of a certain type) is to run a fairly processor heavy set of SQL statements - I'm hoping someone can point me in the right direction here...

Currently I'm having to get all the live CollectionVersions and then looping through each of these to get the related CollectionVersionBlocks.

There must be a better way of getting all live blocks of a certain type?

Thanks in advance!