I will answer first your question # 2:. According to the scenario you described, it will be fast enough. But don't forget to issue direct SQL commands to the database. I personally have a very, very similar scenario, and the application works without any problems, but when a scheduled task performs multiple inserts / deletes using a tool (for example, nhibernate), deadlocks occur. So, again, if possible, follow the direct SQL statements.
Question # 1: You can use "SELECT WITH NOLOCK".
For instance:
SELECT * FROM table_sales WITH (NOLOCK)
It avoids blocks in the database. But you must remember that you can read outdated information (again, in the scenario you described, this will probably not be a problem).
You can also try "READ COMMITTED SNAPSHOT", it has been supported since 2005, but for this example I will keep it simple. Find a little about it to decide which one might be the best choice for you.
source share