Should I create seperate referenced table or go with serialized data in a column? I have a table with name app_client with the below fields


  id, user_id, name, age, phone, gender, related_entities_json (long text datatype),
  created_at, updated_at


I have 200k+ records in this table and I found that the size is mainly increased (7 GB ) due to related_entities_json field. 

So I want to know that should I move related_entities_json to a seperate table? And then access it's data when needed! 

I don't want to open another question for this so i would also like to know that Will this increase performance during fetching/inserting data?

Entry in related_entities_json from a row 

https://pastebin.com/y4XDCK4Y
No.  InnoDB does something like that for you.  If a table has any bulky TEXT or BLOB columns, those columns are stored "off-record".  This means that they go in a separate block(s) on disk.  Meanwhile, if you read only other columns, you are not 'wasting' time fetching the bulky columns.

Corollary:  Do not use SELECT * ...; instead specify the columns you really need.

(History:  Back when ENGINE=MyISAM was the typical table type, your idea was a good one.)

A tip:  Consider COMPRESSing and UNCOMPRESSing the JSON column in the client.  This may shrink your 7GB to 2-3GB, and speed up queries that do need to look at the JSON (because I/O costs more that CPU).