Zmieniłbym wszystko gdzie autorstwa whereIn jak:
if($userid){
$q->andWhereIn('a.userid', $userid);
}
if($catID){
$q->andWhereIn('ca.categorie_id', $catID);
}
Myślę, że dzieje się tak, ponieważ gdy używasz wyników w widoku, paginator nie może pobrać wszystkich rekordów z rzędu, więc dla każdego elementu musi wykonać zapytanie, aby uzyskać wszystkie pola.