I read through some documents, and learned that Salesforce internally maintains metadata tables, pivot tables and large data tables, and salesforce kernel then performs queries on these tables to present the application to the tenant. While I was reading the concept of Skinny tables, I stumbled on line saying that SF stores Standard field and custom field values in different tables , which forces a join to happen in case a query refers to both kind of field. Skinny tables helps stores all frequents used fields data in a separate table to avoid join and thus giving faster results.
I am pretty confused when it is said that data for these two kind of fields are stores separately, while my understanding was that all data are stored in large heap tables.
Could you please help me grasp the concept of skinny table and help me to clarify the confusion?