The code above is not optimized. You should be using the Kentico Object Query API AND caching.
Also, a few other things to look at:
- If the site was upgraded from previous versions, did the upgrades succeed?
- Was the rosilyn compiler properly implemented?
- What are the specifications of your web and database servers?
- Are you optimizing your queries by adding where clauses and specifying the column to retrieve?
" Lastly are you using Kentico best practices for optimizing your site?
If you want further info, that's typically where we start charging our clients for consulting and optimization of the website.