add_filter('pre_get_posts', 'customize_query');
function customize_query($query) {
if($query->is_main_query() && ($query->is_search() || $query->is_archive()) {
$query->set('update_post_meta_cache', false);
$query->set('update_post_term_cache', false);
}
}
Then wordpress will make 2 less queries for those pages & then you can use the $wpdb object to write custom queries.