A family of Microsoft relational database management systems designed for ease of use.
Maria,
The most "efficient" way to deal with resource overallocation is to use Project's resource leveling feature. Personally I like the manual approach you are currently using because it give more control, but it can be slow and tedious.
Resource leveling is based on the Priority field. The default priority is 500. Lower priority tells the leveling algorithm that the task can be moved to avoid the overallocation and higher priority tells the algorithm to either not move the task at all (priority 1000) or only move it after the lower priority tasks have been move and overallocation still exists. Leveling can be applied to a select resources or all resources and can be applied to the whole project or limited to a time period. Also be sure to check out the leveling options found under Resource/Level group/Leveling options.
Hope this helps.
John