I have module for wage caculation that shoul calculate wage for 3000 staff.

for the first staff calculation madule spend about 5 seconds but for the 1000th staff this time is about 70 seconds and increase staff by staff to 5 min.
Why?

All of those numbers are orders of magnitude too high, starting with the 5 seconds, and the time should be constant per row. You must be doing something wrong, and your database must also negate this indexes that your queries and updates require.