I wonder if there is any way to store data in smart contract which does not charge fees or can we use any external EASY data from smart contract. In my contract I have to update lots of fields on each transaction and I think it will increase fee a lot.
No, all data storage in the blockchain costs gas. Furthermore, the contract can't use external data directly.
You can access external data through oracles, but in that case you most likely have to also pay the data costs. So, basically, whatever data you want to input in the blockchain, you have to pay for it. Of course if you find the required data already existing in some other contract, you can possibly utilize that.