I don't understand though, does that mean that miners' mempools were totally empty and they didn't include any transactions? Or the interval time between the blocks was just 1-2 seconds and therefore, there wasn't enough time to include transactions?
Miners, as in the large ASIC farms you are probably thinking of, don't have mempools. Nodes have mempools.
When the node belonging to a mining pool operator receives a block, it must validate that block and every transaction in it. Once it has done that, it must remove all the transactions in that block from its mempool. Then it must construct a new candidate block from its updated mempool, before calculating the Merkle root and then sending that block header to miners to be worked on. All this takes some time. Rather than having thousands of ASICs sitting idle during this time (and therefore wasting money), it will have them work on an empty block for the few seconds it takes for this process to happen. Occasionally they get lucky and mine an empty block.
If mining pools immediately created candidate blocks which were full, then chances are they would end up including transactions which were already confirmed in the block they just received but had not yet validated. This would result in this candidate block being invalid. So instead they create empty candidate blocks, and then update them to full candidate blocks a few seconds later once they have fully validated the last block.
Also note the timestamps on blocks are not actually accurate enough to tell you how long it took between mining blocks. The timestamps give an average time over days to weeks, but are inaccurate at the individual block level.