For extremely large-scale combat, roll "buckets o' dice" ala simple miniatures combat rules; role a d6 for each combatant, a 5-6 is a hit, and hits kill one npc etc. Most GMs who get into large-scale battles involving player-led armies vs enemy hordes develop or borrow a special ruleset for those encounters, often based on handfuls of dice.
For anything smaller scale involving player characters, just streamline things and roll fast. Roll initiative once and stick to that order, and try to roll initiative only once for ALL the enemies (make an exception for a stronger enemy, a 'boss' or leader). This has the effect of letting players who rolled high go first, then the enemies respond, then the low rollers, so the players feel like their initiative rolls meant something, but it essentially ends up cycling with the players going, then the enemies.
If you are constantly fighting the same make-up of groups, the attack and damage rolls should be easy and fast. The players know what AC the enemies are, and you as GM should know what AC the players have, so simple combat should be extremely fast. If you are finding ALL combat moves at a snail's pace you need to re-examine how you resolve combat. I see anothe rposter saying that "Every time someone rolls a set of dice, it takes on average between 30 and 60 seconds to get a result"; this seems way too slow for simple combat attack rolls. In my games, players roll a d20 and we know within 2 seconds if it was a hit or miss, and a damage roll doesn't take much longer. Add in time to declare their attack etc. and everything happens within 15-30 seconds easily, unless the player agonizes about what action to take. Spells take longer, but common spells they have been using in combat before take under 30 seconds.
As for the GM-run NPCs, you just need to start rolling faster: roll damage at the same time as the to-hit roll if you really need to. As GM, don't waste time agonizing over tactics yourself; save that for important battles, not run-of-the-mill encounters. Make the enemies mostly predictable; they attack nearest player until they lose 50% of their forces, then they break morale and run away. Don't spend time on descriptions of actions beyond "this archer fires at character X and...misses", then immediately roll the next NPC's attack. If you lead by example the players will pick up the pace. Slow combat down for rare encounters, speed it up for everything else.
I see this issue cropping up with inexperienced GMs sometimes, or in a group that always focuses on "combat" as the game, v.s. role-playing and story. In the first case, more experience will eventually solve the issue; in the second, you need to design the campaigns so that there aren't "unimportant random encounters" etc.
I'm going to repeat the most important part: lead by example. If that doesn't work, stop resolving boring random encounters with dice, just tell the players that during their trip they fought off N number of enemy ambushes, and get them to where the important battles are. If your group are hung up on intricate combat resolution you need to make sure that every combat is worth the work.