[{"data":1,"prerenderedAt":208},["ShallowReactive",2],{"term-e\u002Feager-loading":3,"related-e\u002Feager-loading":194},{"id":4,"title":5,"acronym":6,"body":7,"category":175,"description":176,"difficulty":177,"extension":178,"letter":179,"meta":180,"navigation":181,"path":182,"related":183,"seo":188,"sitemap":189,"stem":192,"subcategory":6,"__hash__":193},"terms\u002Fterms\u002Fe\u002Feager-loading.md","Eager Loading",null,{"type":8,"value":9,"toc":169},"minimark",[10,15,19,23,26,30,158,162,165],[11,12,14],"h2",{"id":13},"eli5-the-vibe-check","ELI5 — The Vibe Check",[16,17,18],"p",{},"Eager loading fetches all the related data you need upfront in one or two queries. Instead of loading a post and then separately loading its author and comments, you fetch everything together. Prevents N+1 problems. The 'include' in Prisma\u002FSequelize.",[11,20,22],{"id":21},"real-talk","Real Talk",[16,24,25],{},"Eager loading is a strategy where associated objects are loaded as part of the initial query, using JOINs or a second IN query. It is the solution to the N+1 problem. ORMs implement it via keywords like include (Prisma), eager_load (Rails), or with (Eloquent). The trade-off is potentially fetching more data than needed.",[11,27,29],{"id":28},"show-me-the-code","Show Me The Code",[31,32,37],"pre",{"className":33,"code":34,"language":35,"meta":36,"style":36},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F Prisma: eager load posts with author\nconst posts = await prisma.post.findMany({\n  include: {\n    author: true,\n    comments: { take: 5 }\n  }\n});\n","javascript","",[38,39,40,49,89,102,117,140,146],"code",{"__ignoreMap":36},[41,42,45],"span",{"class":43,"line":44},"line",1,[41,46,48],{"class":47},"sHwdD","\u002F\u002F Prisma: eager load posts with author\n",[41,50,52,56,60,64,68,71,74,77,79,83,86],{"class":43,"line":51},2,[41,53,55],{"class":54},"spNyl","const",[41,57,59],{"class":58},"sTEyZ"," posts ",[41,61,63],{"class":62},"sMK4o","=",[41,65,67],{"class":66},"s7zQu"," await",[41,69,70],{"class":58}," prisma",[41,72,73],{"class":62},".",[41,75,76],{"class":58},"post",[41,78,73],{"class":62},[41,80,82],{"class":81},"s2Zo4","findMany",[41,84,85],{"class":58},"(",[41,87,88],{"class":62},"{\n",[41,90,92,96,99],{"class":43,"line":91},3,[41,93,95],{"class":94},"swJcz","  include",[41,97,98],{"class":62},":",[41,100,101],{"class":62}," {\n",[41,103,105,108,110,114],{"class":43,"line":104},4,[41,106,107],{"class":94},"    author",[41,109,98],{"class":62},[41,111,113],{"class":112},"sfNiH"," true",[41,115,116],{"class":62},",\n",[41,118,120,123,125,128,131,133,137],{"class":43,"line":119},5,[41,121,122],{"class":94},"    comments",[41,124,98],{"class":62},[41,126,127],{"class":62}," {",[41,129,130],{"class":94}," take",[41,132,98],{"class":62},[41,134,136],{"class":135},"sbssI"," 5",[41,138,139],{"class":62}," }\n",[41,141,143],{"class":43,"line":142},6,[41,144,145],{"class":62},"  }\n",[41,147,149,152,155],{"class":43,"line":148},7,[41,150,151],{"class":62},"}",[41,153,154],{"class":58},")",[41,156,157],{"class":62},";\n",[11,159,161],{"id":160},"when-youll-hear-this","When You'll Hear This",[16,163,164],{},"\"Use eager loading to avoid the N+1 problem when fetching posts with authors.\" \u002F \"Eager loading everything can cause slow queries if you load too much data.\"",[166,167,168],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":36,"searchDepth":51,"depth":51,"links":170},[171,172,173,174],{"id":13,"depth":51,"text":14},{"id":21,"depth":51,"text":22},{"id":28,"depth":51,"text":29},{"id":160,"depth":51,"text":161},"database","Eager loading fetches all the related data you need upfront in one or two queries.","intermediate","md","e",{},true,"\u002Fterms\u002Fe\u002Feager-loading",[184,185,186,187],"N+1 Query","Lazy Loading","Query Optimization","JOIN",{"title":5,"description":176},{"changefreq":190,"priority":191},"weekly",0.7,"terms\u002Fe\u002Feager-loading","tjy8JXpuAfpXCU7c-W16A0KbPyhEmWzjnmB-YkYD-dg",[195,198,201,204],{"title":187,"path":196,"acronym":6,"category":175,"difficulty":177,"description":197},"\u002Fterms\u002Fj\u002Fjoin","JOIN combines rows from two tables based on a related column.",{"title":185,"path":199,"acronym":6,"category":175,"difficulty":177,"description":200},"\u002Fterms\u002Fl\u002Flazy-loading","Lazy loading waits until you actually access related data before fetching it. Access post.author and only then does it query the database.",{"title":184,"path":202,"acronym":6,"category":175,"difficulty":177,"description":203},"\u002Fterms\u002Fn\u002Fn-1-query","N+1 is when your code runs 1 query to get a list of things, then runs 1 more query for EACH thing on the list.",{"title":186,"path":205,"acronym":6,"category":175,"difficulty":206,"description":207},"\u002Fterms\u002Fq\u002Fquery-optimization","advanced","Query optimization is the art of making slow database queries fast. Add an index here, rewrite that subquery as a JOIN, fetch only the columns you need.",1776518276146]