Query execution is lazy and only happens upon usage of the [DetachedCriteria|guide:detachedCriteria] instance.

クエリ実行(SQLが実際に発行される)が遅延されるされるのは、処理が重いからではなく、DetachedCriteriaを共通化して使用したからだと思います。上の説明でもあるようにDetachedCriteriaは特定のデータベースのコネクションやセッションと関連づいているわけではないのパートして共通化して使用することもできます。

そのためwhereでは単にDetachedCriteriaが生成されるだけで、その時点ではまだクエリは実行されません。実行するには生成したDetachedCriteriaのメソッドをさらに実行する必要があります。