Caching results of query for part of table that almost never change
It's best not to use a count(*).  Instead, use a count(PrimaryKey), where the Primarykey is whatever your PrimaryKey happens to be.

For example, if the PrimaryKey is EmplID, then use count(EmplID).  If you don't have a PrimaryKey, create one.  Without a PrimaryKey, the query will always use a table scan (where it looks at every single row to find the data) rather than using an indexed seek. Think of it like a filing cabinet. If all your records are organized alphabetically, you always know where to find customers whose names start with "F". If it's not organized, you have to look through every single piece of paper to find the right customer records.

For each of your WHERE conditions, make sure each field is indexed.  Field1 should be indexed, Field2 should be indexed.  It doesn't matter if the value changes.  As long as the field is indexed and you REBUILD or RECREATE the index often, it should work just fine.

You shouldn't need Query2 and Query3.  If you decide to use Query2, make sure the Creation_Date is indexed as well.