In theory if I had collated all the data of all the nonces and headers to give the correct hash and created a rainbow table for this, would it be faster to go into the table and lookup the nonce or brute force it still? If, so approximately you be able to tell me how much faster?
It would not since the header for every block is unique. It contains a field for the merkle root, the hash of all of the transactions included in the block. Since it is not possible to have the same transaction included in multiple blocks, the merkle root will always be different. Furthermore the block includes a timestamp, and that timestamp is always different for every block.