When IIS worker thread is doing a lot of work, it usually means one or more of the following:
- Your site has a lot of visitor traffic
- You have a lot of content editors doing work in Kentico at the same time
- You have CPU-heavy scheduled tasks that are running at high traffic times or running too frequently
- You have CPU-heavy global event handlers running frequently
Also, you shouldn't use ADO.NET on the Kentico database itself, but you can use it for any external databases that provide data to the website. Kentico data should be retrieved and manipulated by ObjectQuery, which is optimized to perform those tasks.
EDIT: You should also review how you are caching data, because that will contribute to high memory usage. Read this documentation to see if you can alleviate your problems.