The plugin needs to first collect the headers of the post before it can display them in a freely positional toc box. Hence it queries the post/page content unconditionally, but only in singular view (when there's only a single post/page shown).
There is no other way. Even to scan the content for a "[toc]" shortcode first, it would have to query it nonetheless.
However, the plugin does not do any extra database queries. It processes already retrieved content, so it should not really create any significant overhead in terms of CPU load.
On the other hand, I see little sense in reducing CPU load by all means, "out of principle". If you have enough CPU power, it would be a waste not to use it. (The opposite extreme is, to reduce CPU load by 100%, you'll have to stop using the computer.) In my experience, today's servers all have plenty of CPU power to cope with a couple of dozens, or hundreds, WP plugins.