rawQuery Vs. database.query
It's definitely preferred to build a query through the methods provided. Not only does it protect you from SQL injections, it also builds the query for you so you can avoid having a whole bunch of string concatenations that will make the query string less readable and more error prone. Performance-wise I don't think it makes much difference.
Readability is an advantage of the rawQuery. At least for me.
As you know, according to the Pareto principle developer spend 80% of its time reading the code. Therefore the readability is a very strong argument.
Though QueryBuilder also provides the way to use placeholders (protect from SQL injections).
Hope that helps.