Good morning Vinicius,
I am not a database expert, but I will try to help by indicating actions that I believe will help you.
1) Consider partitioning your table.
If your table has a very large volume of records, in the millions, consider partitioning it. That way you do not have to scan your entire table every time you do a SELECT. You will only scan the partition in which the registry is located. You did not say which version of your SQL Server, but there is a link that can help you - > link
2) Consider duplicating some information to lessen competition.
For example, if you have the same information in more than one table, you do not have to always go to the same table to get this information, you can get the same information in the other tables depending on your need. This will also decrease your amount of INNER JOINS. But remembering that when duplicating information, you need to be careful while changing and deleting those records, most of the time you will have to exclude from all the tables where you duplicated such information.
a little more about competition - > link
3) Consider scheduling processes.
SQL Server allows some processes to be scheduled (JOB).
Analyze if there is any routine that can be scheduled to run at alternate hours, at dawn for example.
4) Consider creating queues.
You create a processing queue schema in your application.
For example: If there is a very heavy report to generate, and several people are requesting the same report, have these requests fall into a queue and be processed one by one. That way you will not only burden the bank with processing this report.
5) Consider index creation.
A little more about indexes in sql server - > link
As I said, I'm no bank expert, but maybe these tips will help you.
I hope I have helped!