302 lines
706 KiB
HTML
302 lines
706 KiB
HTML
<!DOCTYPE html><html data-dpl-id="dpl_9i6KweGTYWNasiv9e3XcXFAn1n9r" lang="en-US" data-color-scheme="light" data-resolved-scheme="light"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" imageSrcSet="/_next/image/?url=https%3A%2F%2Fwww.datocms-assets.com%2F55802%2F1693512920-julianne.jpeg%3Fauto%3Dformat%252Ccompress%26fit%3Dmax%26q%3D80%26w%3D128&w=48&q=75 1x, /_next/image/?url=https%3A%2F%2Fwww.datocms-assets.com%2F55802%2F1693512920-julianne.jpeg%3Fauto%3Dformat%252Ccompress%26fit%3Dmax%26q%3D80%26w%3D128&w=96&q=75 2x"/><link rel="preload" as="image" imageSrcSet="/_next/image/?url=https%3A%2F%2Fwww.datocms-assets.com%2F55802%2F1768487001-2026-01-scaling-tines-partitioning-a-17tb-table-in-postgresql.png%3Fauto%3Dformat%252Ccompress%26fit%3Dmax%26q%3D90%26w%3D2400&w=640&q=90 640w, /_next/image/?url=https%3A%2F%2Fwww.datocms-assets.com%2F55802%2F1768487001-2026-01-scaling-tines-partitioning-a-17tb-table-in-postgresql.png%3Fauto%3Dformat%252Ccompress%26fit%3Dmax%26q%3D90%26w%3D2400&w=750&q=90 750w, /_next/image/?url=https%3A%2F%2Fwww.datocms-assets.com%2F55802%2F1768487001-2026-01-scaling-tines-partitioning-a-17tb-table-in-postgresql.png%3Fauto%3Dformat%252Ccompress%26fit%3Dmax%26q%3D90%26w%3D2400&w=828&q=90 828w, /_next/image/?url=https%3A%2F%2Fwww.datocms-assets.com%2F55802%2F1768487001-2026-01-scaling-tines-partitioning-a-17tb-table-in-postgresql.png%3Fauto%3Dformat%252Ccompress%26fit%3Dmax%26q%3D90%26w%3D2400&w=1080&q=90 1080w, /_next/image/?url=https%3A%2F%2Fwww.datocms-assets.com%2F55802%2F1768487001-2026-01-scaling-tines-partitioning-a-17tb-table-in-postgresql.png%3Fauto%3Dformat%252Ccompress%26fit%3Dmax%26q%3D90%26w%3D2400&w=1200&q=90 1200w, /_next/image/?url=https%3A%2F%2Fwww.datocms-assets.com%2F55802%2F1768487001-2026-01-scaling-tines-partitioning-a-17tb-table-in-postgresql.png%3Fauto%3Dformat%252Ccompress%26fit%3Dmax%26q%3D90%26w%3D2400&w=1920&q=90 1920w, /_next/image/?url=https%3A%2F%2Fwww.datocms-assets.com%2F55802%2F1768487001-2026-01-scaling-tines-partitioning-a-17tb-table-in-postgresql.png%3Fauto%3Dformat%252Ccompress%26fit%3Dmax%26q%3D90%26w%3D2400&w=2048&q=90 2048w, /_next/image/?url=https%3A%2F%2Fwww.datocms-assets.com%2F55802%2F1768487001-2026-01-scaling-tines-partitioning-a-17tb-table-in-postgresql.png%3Fauto%3Dformat%252Ccompress%26fit%3Dmax%26q%3D90%26w%3D2400&w=3840&q=90 3840w" imageSizes="(max-width: 767px) 100vw, (max-width: 1439px) 70vw, 1040px"/><link rel="stylesheet" href="/_next/static/immutable/chunks/132trk_zc3ylu.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/immutable/chunks/1bmd2ryn1r-hv.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/immutable/chunks/3qp9-r2fgklws.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/immutable/chunks/43xkgk33-6316.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/immutable/chunks/3w0wy298bmb96.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/immutable/chunks/27k1lbkm9ytw4.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/immutable/chunks/45auz_6fncqnw.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/immutable/chunks/3a0f_y332k2v1.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/immutable/chunks/2iox-02sx9loa.js"/><script src="/_next/static/immutable/chunks/2n1jkab2r5d63.js" async=""></script><script src="/_next/static/immutable/chunks/1pguxqs8oj5s0.js" async=""></script><script src="/_next/static/immutable/chunks/43a_dvcajw8iz.js" async=""></script><script src="/_next/static/immutable/chunks/turbopack-3xk1_gujkngr6.js" async=""></script><script src="/_next/static/immutable/chunks/3sz971vfk095f.js" async="" crossorigin=""></script><script src="/_next/static/immutable/chunks/0czgivygkxa1z.js" async="" crossorigin=""></script><script src="/_next/static/immutable/chunks/2kpu_ktjkwf7q.js" async="" crossorigin=""></script><script src="/_next/static/immutable/chunks/07hv-f84dhd61.js" async="" crossorigin=""></script><script src="/_next/static/immutable/chunks/0639nwpv6l0pm.js" async="" crossorigin=""></script><script src="/_next/static/immutable/chunks/2826pm12av2bw.js" async="" crossorigin=""></script><script src="/_next/static/immutable/chunks/2_swgt_1o6v9a.js" async="" crossorigin=""></script><script src="/_next/static/immutable/chunks/3pjhofejz57jt.js" async=""></script><script src="/_next/static/immutable/chunks/1q-89ajkqbbkw.js" async=""></script><script src="/_next/static/immutable/chunks/2uho2m59t6w8f.js" async=""></script><script src="/_next/static/immutable/chunks/2ti9pdu9p4n5l.js" async=""></script><script src="/_next/static/immutable/chunks/31qqpjo4d7384.js" async=""></script><script src="/_next/static/immutable/chunks/3zb6qebqmln4d.js" async=""></script><meta name="theme-color" content="#fcf9f5"/><link rel="preload" href="/fonts/Roobert-Regular.woff2" as="font" type="font/woff2" crossorigin="anonymous"/><link rel="preload" href="/fonts/Reckless-Light.woff2" as="font" type="font/woff2" crossorigin="anonymous"/><link rel="preload" href="/fonts/Reckless-Regular.woff2" as="font" type="font/woff2" crossorigin="anonymous"/><title>Futureproofing Tines: Partitioning a 17TB table in PostgreSQL</title><meta name="keywords" content="Tines, security workflow automation, No-Code, SOAR"/><link rel="canonical" href="https://www.tines.com/blog/futureproofing-tines-partitioning-a-17tb-table-in-postgresql/"/><meta property="og:title" content="Futureproofing Tines: Partitioning a 17TB table in PostgreSQL"/><meta property="og:image" content="https://www.datocms-assets.com/55802/1768487001-2026-01-scaling-tines-partitioning-a-17tb-table-in-postgresql.png?auto=format%2Ccompress&fit=max&q=90&w=2400"/><meta property="og:type" content="article"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:creator" content="@tines_hq"/><meta name="twitter:title" content="Tines | Intelligent workflow platform"/><meta name="twitter:description" content="Build and orchestrate intelligent workflows and agents, on the platform security and IT teams love."/><meta name="twitter:image" content="https://www.tines.com/v5-assets/images/og/tines-home.png"/><link rel="icon" href="/v5-assets/favicon.png"/><script id="color-scheme-init">(function(){var d=document.documentElement,p=location.pathname,R=["/stories/docs","/stories/whats-new","/workflow-capability-matrix","/3b/examples","/3b/product-updates","/library","/stories/five-minute-flows"],F=["/stories/five-minute-flows"],M=["/workflow-capability-matrix"];function tc(c){var m=document.querySelector('meta[name="theme-color"]');if(m)m.setAttribute("content",c)}function on(L){return L.some(function(r){return p===r||p.indexOf(r+"/")===0})}var ok=on(R);if(!ok){d.removeAttribute("data-dark-mode-supported");d.removeAttribute("data-page-theme");d.setAttribute("data-color-scheme","light");d.setAttribute("data-resolved-scheme","light");tc("#fcf9f5");if(on(["/campaigns"])){d.setAttribute("data-campaign-nav","")}return}d.setAttribute("data-dark-mode-supported","");if(on(F)){d.setAttribute("data-color-scheme","dark");d.setAttribute("data-resolved-scheme","dark");tc("#16131e");return}var pt=document.cookie.match(/page-theme=(\w+)/);var mq=/[?&]matrix=on/.test(location.search);if(on(M)&&((pt&&pt[1]==="matrix")||mq)){d.setAttribute("data-page-theme","matrix");d.setAttribute("data-color-scheme","dark");d.setAttribute("data-resolved-scheme","dark");tc("#0b1a17");return}else{d.removeAttribute("data-page-theme")}var cm=document.cookie.match(/preferred-color-scheme=(\w+)/);var s;if(cm){s=cm[1]}else{var sv=d.getAttribute("data-color-scheme");s=sv&&sv!=="light"?sv:"auto"}var r=s==="dark"?"dark":s==="light"?"light":window.matchMedia("(prefers-color-scheme:dark)").matches?"dark":"light";d.setAttribute("data-color-scheme",s);d.setAttribute("data-resolved-scheme",r);tc(r==="dark"?"#16131e":"#fcf9f5");if(on(["/campaigns"])){d.setAttribute("data-campaign-nav","")}})()</script><script src="/_next/static/immutable/chunks/0c0hxoamwjsbw.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","name":"Tines","url":"https://www.tines.com/","@id":"https://www.tines.com/#org","description":"Tines 3B enables every team to build AI agents, apps, and automation in one safe, secure environment — with the control Security and IT need to govern it at scale.","foundingDate":"2018","founders":[{"@type":"Person","name":"Eoin Hinchy"},{"@type":"Person","name":"Thomas Kinsella"}],"sameAs":["https://www.linkedin.com/company/tines-io/","https://twitter.com/tines_hq","https://www.youtube.com/@TinesHQ","https://github.com/tines"],"contactPoint":[{"@type":"ContactPoint","contactType":"customer support","email":"hello@tines.com","availableLanguage":["en"]},{"@type":"ContactPoint","contactType":"analyst relations","email":"analysts@tines.com","availableLanguage":["en"]},{"@type":"ContactPoint","contactType":"media relations","email":"pr@tines.com","availableLanguage":["en"]}],"address":[{"@type":"PostalAddress","streetAddress":"10 Westland Square, Pearse Street","addressLocality":"Dublin","postalCode":"D02 CX36","addressCountry":"IE","name":"Tines Limited"},{"@type":"PostalAddress","streetAddress":"99 High Street, 14th Floor","addressLocality":"Boston","addressRegion":"MA","postalCode":"02111","addressCountry":"US","name":"Tines Technology Inc."}],"areaServed":"Global"}</script><div class="PageBackdrop-module-scss-module__KKf-uW__pageShell"><div id="page-backdrop-portal" class="PageBackdrop-module-scss-module__KKf-uW__slot" aria-hidden="true"></div><a href="#main-content" class="skip-link">Skip to content</a><header id="site-nav" class="SiteNav26-module-scss-module__OUXeaq__header"><div class="SiteNav26-module-scss-module__OUXeaq__blur" aria-hidden="true"></div><div class="SiteNav26-module-scss-module__OUXeaq__backdrop" aria-hidden="true"></div><div class="SiteNav26-module-scss-module__OUXeaq__bar"><div class="SiteNav26-module-scss-module__OUXeaq__left"><div class="SiteNav26-module-scss-module__OUXeaq__logoWrap"><a class="SiteNav26-module-scss-module__OUXeaq__logo" title="Tines" href="/"><svg class="TinesLogo" width="91" height="28" viewBox="0 0 103 32" fill="currentColor"><title>Tines</title><path d="M42.9689 10.5676H40V13.6565H42.9689V20.4041C42.9689 23.7629 45.1282 25.6822 48.427 25.6822H50.8561V22.3534H48.8468C47.4673 22.3534 46.6576 21.5737 46.6576 20.0442V13.6565H50.8561V10.5676H46.6576V6.00928H42.9689V10.5676Z"></path><path d="M52.5751 8.19849H56.6536V4H52.5751V8.19849ZM56.4437 25.6822V10.5676H52.755V25.6822H56.4437Z"></path><path d="M62.3935 25.6822V17.4352C62.3935 15.216 63.833 13.5966 65.9023 13.5966C67.7916 13.5966 69.0511 15.036 69.0511 17.1053V25.6822H72.7398V16.3256C72.7398 12.7868 70.5206 10.3277 67.1018 10.3277C64.9426 10.3277 63.2332 11.2574 62.3935 12.9068V10.5676H58.7048V25.6822H62.3935Z"></path><path d="M85.399 20.644C85.0092 22.0835 83.7796 22.8632 81.8903 22.8632C79.5511 22.8632 77.9917 21.3038 77.7218 18.8747H88.8778C88.9078 18.5748 88.9377 18.1249 88.9377 17.6151C88.9377 14.0164 86.6586 10.3277 81.5904 10.3277C76.6422 10.3277 74.183 14.0764 74.183 18.065C74.183 22.0235 76.9421 25.9221 81.8903 25.9221C85.6089 25.9221 88.4279 23.8529 88.9977 20.644H85.399ZM81.5904 13.0867C83.7796 13.0867 85.0991 14.5262 85.2491 16.4455H77.8117C78.2016 14.1664 79.5211 13.0867 81.5904 13.0867Z"></path><path d="M96.3428 25.9221C99.8815 25.9221 102.191 24.0628 102.191 21.2138C102.191 14.3763 93.7937 17.975 93.7937 14.7062C93.7937 13.6865 94.6634 13.0867 95.9829 13.0867C97.1525 13.0867 98.442 13.8065 98.6519 15.216H102.011C101.861 12.277 99.4316 10.3277 95.8929 10.3277C92.774 10.3277 90.4649 12.1871 90.4649 14.8261C90.4649 21.2138 98.7419 18.005 98.7419 21.3638C98.7419 22.2634 97.7822 22.9832 96.3428 22.9832C94.6933 22.9832 93.5837 22.0835 93.4338 20.644H90.075C90.2549 23.8829 92.6841 25.9221 96.3428 25.9221Z"></path><path fill-rule="evenodd" clip-rule="evenodd" d="M11.8018 0C8.01458 0 4.66599 2.45749 3.53258 6.06868L0.415527 16L3.53258 25.9313C4.66599 29.5425 8.01458 32 11.8018 32H20.1981C23.9853 32 27.3339 29.5425 28.4673 25.9313L31.5844 16L28.4673 6.06868C27.3339 2.45749 23.9853 0 20.1981 0H11.8018ZM20.1982 2.49634C22.8938 2.49634 25.2772 4.24548 26.0839 6.81577L26.8481 9.25062C25.3107 7.98154 23.3639 7.26723 21.3292 7.26707L10.648 7.26679C8.62691 7.26694 6.69264 7.97168 5.16015 9.22481L5.91625 6.81577C6.72297 4.24548 9.10635 2.49634 11.8019 2.49634H20.1982ZM5.73674 12.1986L3.79587 14.7519L28.1811 14.7519L26.2404 12.1989C25.0741 10.6646 23.2571 9.76356 21.329 9.76341H10.5898C8.68349 9.78153 6.89125 10.6798 5.73674 12.1986ZM28.1771 17.2482L26.2403 19.7989C25.0739 21.3349 23.2555 22.237 21.326 22.2368L10.6509 22.2366C8.72137 22.2367 6.90298 21.3346 5.73661 19.7986L3.79996 17.2482L28.1771 17.2482ZM5.9161 25.1842C6.72282 27.7545 9.1062 29.5037 11.8018 29.5037H20.1981C22.8936 29.5037 25.277 27.7545 26.0837 25.1842L26.8485 22.7476C25.3104 24.0182 23.3622 24.7333 21.3258 24.7332L10.651 24.7329C8.6283 24.7331 6.69244 24.0274 5.15921 22.7727L5.9161 25.1842Z"></path></svg></a></div><nav class="SiteNav26-module-scss-module__OUXeaq__navList" aria-label="Primary"><button type="button" class="SiteNav26-module-scss-module__OUXeaq__navItem" aria-expanded="false">Product<span class="SiteNav26-module-scss-module__OUXeaq__navChevron" aria-hidden="true"></span></button><button type="button" class="SiteNav26-module-scss-module__OUXeaq__navItem" aria-expanded="false">Solutions<span class="SiteNav26-module-scss-module__OUXeaq__navChevron" aria-hidden="true"></span></button><a class="SiteNav26-module-scss-module__OUXeaq__navItem" href="/customers/">Customers</a><button type="button" class="SiteNav26-module-scss-module__OUXeaq__navItem" aria-expanded="false">Discover<span class="SiteNav26-module-scss-module__OUXeaq__navChevron" aria-hidden="true"></span></button><a class="SiteNav26-module-scss-module__OUXeaq__navItem" href="/pricing/">Pricing</a></nav></div><div class="SiteNav26-module-scss-module__OUXeaq__right"><a href="https://login.tines.com" target="_blank" rel="noopener noreferrer" class="SiteNav26-module-scss-module__OUXeaq__cta">Log in</a><a href="https://login.tines.com/saml_idp/signup" target="_blank" rel="noopener noreferrer" class="SiteNav26-module-scss-module__OUXeaq__cta">Sign up</a><a class="SiteNav26-module-scss-module__OUXeaq__cta SiteNav26-module-scss-module__OUXeaq__ctaFilled" href="/book-a-demo/">Book a demo</a><div class="SiteNav26-module-scss-module__OUXeaq__searchSlot"><button type="button" class="NavSearch-module-scss-module__vLhI_W__pillButton" aria-label="Open search"><svg viewBox="0 0 18 18" fill="none" aria-hidden="true"><path fill-rule="evenodd" clip-rule="evenodd" d="M8 3C10.7614 3 13 5.23858 13 8C13 9.11033 12.6367 10.1351 12.0244 10.9648C12.0262 10.9666 12.0285 10.9679 12.0303 10.9697L15.5303 14.4697C15.8232 14.7626 15.8232 15.2374 15.5303 15.5303C15.2374 15.8232 14.7626 15.8232 14.4697 15.5303L10.9697 12.0303C10.9679 12.0285 10.9666 12.0262 10.9648 12.0244C10.1351 12.6367 9.11033 13 8 13C5.23858 13 3 10.7614 3 8C3 5.23858 5.23858 3 8 3ZM8 4.5C6.067 4.5 4.5 6.067 4.5 8C4.5 9.933 6.067 11.5 8 11.5C9.933 11.5 11.5 9.933 11.5 8C11.5 6.067 9.933 4.5 8 4.5Z" fill="currentColor"></path></svg></button></div><button type="button" class="SiteNav26-module-scss-module__OUXeaq__hamburger" aria-label="Toggle menu" aria-expanded="false"><svg viewBox="0 0 18 18" fill="none" aria-hidden="true"><path d="M3 5h12M3 9h12M3 13h12" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"></path></svg></button></div></div><div class="SiteNav26-module-scss-module__OUXeaq__panel" hidden=""></div><div class="SiteNav26-module-scss-module__OUXeaq__panel" hidden=""></div><div class="SiteNav26-module-scss-module__OUXeaq__panel" hidden=""></div></header><main id="main-content"><div><div class="AreaNav-module-scss-module__oPsmja__areaNav"><div class="AreaNav-module-scss-module__oPsmja__bar"><div class="AreaNav-module-scss-module__oPsmja__inner AreaNav-module-scss-module__oPsmja__preMeasure"><span class="AreaNav-module-scss-module__oPsmja__pillWrap"><a class="AreaNav-module-scss-module__oPsmja__pill" href="/blog/">Blog</a></span><div class="AreaNav-module-scss-module__oPsmja__right AreaNav-module-scss-module__oPsmja__flushEnd"><span class="AreaNav-module-scss-module__oPsmja__sectionsZone"><nav class="AreaNav-module-scss-module__oPsmja__sections"><a class="AreaNav-module-scss-module__oPsmja__sectionTrigger" href="/blog/">Home</a><span class="AreaNav-module-scss-module__oPsmja__flatGroup"><a class="AreaNav-module-scss-module__oPsmja__sectionTrigger" href="/blog/news/">News</a><a class="AreaNav-module-scss-module__oPsmja__sectionTrigger" href="/blog/tutorials/">Tutorials</a><a class="AreaNav-module-scss-module__oPsmja__sectionTrigger" href="/blog/engineering/">Engineering</a><a class="AreaNav-module-scss-module__oPsmja__sectionTrigger" href="/blog/product-updates/">Product updates</a><a class="AreaNav-module-scss-module__oPsmja__sectionTrigger" href="/blog/inside-tines/">Inside Tines</a><a class="AreaNav-module-scss-module__oPsmja__sectionTrigger" href="/blog/tines-by-tines/">Tines × Tines</a></span><div class="AreaNav-module-scss-module__oPsmja__section AreaNav-module-scss-module__oPsmja__collapsible"><button type="button" class="AreaNav-module-scss-module__oPsmja__sectionTrigger" aria-expanded="false">Categories<span class="AreaNav-module-scss-module__oPsmja__caret" aria-hidden="true"></span></button></div><a class="AreaNav-module-scss-module__oPsmja__sectionTrigger" href="/blog/guides/">Guides</a><a class="AreaNav-module-scss-module__oPsmja__sectionTrigger" href="/blog/articles/">All articles</a></nav></span><div class="AreaNav-module-scss-module__oPsmja__rightFixed"></div></div></div></div></div><div class="blog-module-scss-module__RlMr6a__contentColumn"><script type="application/ld+json">{"@context":"https://schema.org","@type":"BlogPosting","headline":"Futureproofing Tines: Partitioning a 17TB table in PostgreSQL","datePublished":"2026-01-20T05:00:00+00:00","dateModified":"2026-01-21T15:51:37+00:00","url":"https://www.tines.com/blog/futureproofing-tines-partitioning-a-17tb-table-in-postgresql/","image":"https://www.datocms-assets.com/55802/1768487001-2026-01-scaling-tines-partitioning-a-17tb-table-in-postgresql.png?auto=format%2Ccompress&fit=max&q=90&w=2400","author":[{"@type":"Person","name":"Julianne Walker"}],"publisher":{"@type":"Organization","name":"Tines","url":"https://www.tines.com"}}</script><div style="display:block;width:var(--xl);height:var(--xl);flex:0 0 var(--xl);user-select:none"></div><header><h1 class="ArticlePageHeader-module-scss-module__szLeSa__title">Futureproofing Tines: Partitioning a 17TB table in PostgreSQL</h1><div class="ArticlePageHeader-module-scss-module__szLeSa__authorInfo"><div class="ArticlePageHeader-module-scss-module__szLeSa__authors"><div class="ArticlePageHeader-module-scss-module__szLeSa__authorPhotos"><img alt="" loading="eager" width="42" height="42" decoding="async" data-nimg="1" class="ArticlePageHeader-module-scss-module__szLeSa__authorPhoto" style="color:transparent" srcSet="/_next/image/?url=https%3A%2F%2Fwww.datocms-assets.com%2F55802%2F1693512920-julianne.jpeg%3Fauto%3Dformat%252Ccompress%26fit%3Dmax%26q%3D80%26w%3D128&w=48&q=75 1x, /_next/image/?url=https%3A%2F%2Fwww.datocms-assets.com%2F55802%2F1693512920-julianne.jpeg%3Fauto%3Dformat%252Ccompress%26fit%3Dmax%26q%3D80%26w%3D128&w=96&q=75 2x" src="/_next/image/?url=https%3A%2F%2Fwww.datocms-assets.com%2F55802%2F1693512920-julianne.jpeg%3Fauto%3Dformat%252Ccompress%26fit%3Dmax%26q%3D80%26w%3D128&w=96&q=75"/></div><div><span class="ArticlePageHeader-module-scss-module__szLeSa__authorName"><span class="ArticlePageHeader-module-scss-module__szLeSa__writtenBy">Written by </span><span>Julianne Walker</span></span></div></div><div class="ArticlePageHeader-module-scss-module__szLeSa__meta"><time dateTime="2026-01-20T05:00:00.000Z">Published on <!-- -->January 20, 2026</time><div class="ArticlePageHeader-module-scss-module__szLeSa__categoryPills"><a class="ArticlePageHeader-module-scss-module__szLeSa__categoryPill" href="/blog/engineering/">Engineering</a></div></div></div></header><div style="display:block;width:var(--lg);height:var(--lg);flex:0 0 var(--lg);user-select:none"></div><div class="page-module-scss-module__Z5AZta__articleLayout"><aside class="page-module-scss-module__Z5AZta__articleAside"></aside><div class="page-module-scss-module__Z5AZta__articleMain"><div class="page-module-scss-module__Z5AZta__coverImage"><img alt="Cover image for Futureproofing Tines: Partitioning a 17TB table in PostgreSQL" loading="eager" width="2400" height="1260" decoding="async" data-nimg="1" style="color:transparent" sizes="(max-width: 767px) 100vw, (max-width: 1439px) 70vw, 1040px" srcSet="/_next/image/?url=https%3A%2F%2Fwww.datocms-assets.com%2F55802%2F1768487001-2026-01-scaling-tines-partitioning-a-17tb-table-in-postgresql.png%3Fauto%3Dformat%252Ccompress%26fit%3Dmax%26q%3D90%26w%3D2400&w=640&q=90 640w, /_next/image/?url=https%3A%2F%2Fwww.datocms-assets.com%2F55802%2F1768487001-2026-01-scaling-tines-partitioning-a-17tb-table-in-postgresql.png%3Fauto%3Dformat%252Ccompress%26fit%3Dmax%26q%3D90%26w%3D2400&w=750&q=90 750w, /_next/image/?url=https%3A%2F%2Fwww.datocms-assets.com%2F55802%2F1768487001-2026-01-scaling-tines-partitioning-a-17tb-table-in-postgresql.png%3Fauto%3Dformat%252Ccompress%26fit%3Dmax%26q%3D90%26w%3D2400&w=828&q=90 828w, /_next/image/?url=https%3A%2F%2Fwww.datocms-assets.com%2F55802%2F1768487001-2026-01-scaling-tines-partitioning-a-17tb-table-in-postgresql.png%3Fauto%3Dformat%252Ccompress%26fit%3Dmax%26q%3D90%26w%3D2400&w=1080&q=90 1080w, /_next/image/?url=https%3A%2F%2Fwww.datocms-assets.com%2F55802%2F1768487001-2026-01-scaling-tines-partitioning-a-17tb-table-in-postgresql.png%3Fauto%3Dformat%252Ccompress%26fit%3Dmax%26q%3D90%26w%3D2400&w=1200&q=90 1200w, /_next/image/?url=https%3A%2F%2Fwww.datocms-assets.com%2F55802%2F1768487001-2026-01-scaling-tines-partitioning-a-17tb-table-in-postgresql.png%3Fauto%3Dformat%252Ccompress%26fit%3Dmax%26q%3D90%26w%3D2400&w=1920&q=90 1920w, /_next/image/?url=https%3A%2F%2Fwww.datocms-assets.com%2F55802%2F1768487001-2026-01-scaling-tines-partitioning-a-17tb-table-in-postgresql.png%3Fauto%3Dformat%252Ccompress%26fit%3Dmax%26q%3D90%26w%3D2400&w=2048&q=90 2048w, /_next/image/?url=https%3A%2F%2Fwww.datocms-assets.com%2F55802%2F1768487001-2026-01-scaling-tines-partitioning-a-17tb-table-in-postgresql.png%3Fauto%3Dformat%252Ccompress%26fit%3Dmax%26q%3D90%26w%3D2400&w=3840&q=90 3840w" src="/_next/image/?url=https%3A%2F%2Fwww.datocms-assets.com%2F55802%2F1768487001-2026-01-scaling-tines-partitioning-a-17tb-table-in-postgresql.png%3Fauto%3Dformat%252Ccompress%26fit%3Dmax%26q%3D90%26w%3D2400&w=3840&q=90"/></div><article class="Article-module-scss-module__ZE_SmG__article page-module-scss-module__Z5AZta__articleContent"><p><strong>At Tines, we recently faced a significant engineering challenge: </strong>our <code>output_payloads</code> table in PostgreSQL was rapidly approaching 17TB on our largest cloud cluster, with no signs of slowing down. Once a table reaches PostgreSQL’s <a href="https://www.postgresql.org/docs/current/limits.html">32TB table size limit</a>, it will stop accepting writes. This table holds <a href="/docs/events/">event</a> data, in the form of arbitrary JSON, which is critical to powering Tines workflows. Given the criticality of the data, we couldn’t risk any disruptions to it. </p><p>As our monitoring showed the table's growth, we began experiencing warning signs. Cleanup jobs on the table had begun to time out. The table was causing increased I/O pressure on our infrastructure, leading us to use more expensive hardware. The arbitrary JSON shape of the data meant massive <a href="https://www.postgresql.org/docs/current/routine-vacuuming.html"><code>autovacuum</code></a> jobs on its <a href="https://www.postgresql.org/docs/current/storage-toast.html">TOAST</a> table. When these <code>autovacuums</code> ran, they displaced other tables from the buffer cache, forcing disk reads in critical areas. As a bandaid, we modified the <a href="https://www.postgresql.org/docs/17/runtime-config-autovacuum.html">autovacuum parameters</a> of the table so that the autovacuums would run more frequently, but have less tuples to process. With performance slowly degrading, and 32TB looming on the horizon, we knew we needed to act decisively.</p><h2 id="enter-partitioning"><a href="#enter-partitioning"><span>Enter: Partitioning</span><svg aria-hidden="true" data-heading-link-icon="true" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path d="M13.5438 10.456C12.7247 9.63723 11.614 9.17728 10.4558 9.17728C9.29766 9.17728 8.18692 9.63723 7.36781 10.456L4.27881 13.544C3.45969 14.3631 2.99951 15.4741 2.99951 16.6325C2.99951 17.7909 3.45969 18.9019 4.27881 19.721C5.09793 20.5401 6.2089 21.0003 7.36731 21.0003C8.52572 21.0003 9.63669 20.5401 10.4558 19.721L11.9998 18.177" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path><path d="M10.4561 13.544C11.2752 14.3628 12.3859 14.8227 13.5441 14.8227C14.7022 14.8227 15.8129 14.3628 16.6321 13.544L19.7211 10.456C20.5402 9.63687 21.0004 8.52591 21.0004 7.36749C21.0004 6.20908 20.5402 5.09811 19.7211 4.27899C18.9019 3.45987 17.791 2.99969 16.6326 2.99969C15.4741 2.99969 14.3632 3.45987 13.5441 4.27899L12.0001 5.82299" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></a></h2><p>We started off with partitioning over sharding, which involves splitting data across multiple independent database instances. We took this approach as we wanted to avoid the complexities of sharding until we were convinced it was absolutely necessary.</p><p>To partition a database table is to divide it into multiple, smaller tables. Each of these smaller tables is a sub-table of the main table, and therefore holds a subset of the data that belongs to the main table. Partitioning is a good idea when you want to spread the data in one table to many tables for better query performance. With partitioning, the database needs to scan less data for each query. Tables that are ideal candidates for partitioning typically exhibit characteristics like: substantial size, high data ingestion rates, significant maintenance overhead (such as prolonged vacuuming and indexing operations), and noticeable query performance degradation. We started to observe these characteristics on our <code>output_payloads</code> table. You can’t alter an existing table to be a partitioned one without taking a downtime, however, so we would have to start fresh with a new, partitioned table. We named the the new table <code>event_payloads</code>.</p><h2 id="our-quest-for-the-optimal-partitioning-strategy"><a href="#our-quest-for-the-optimal-partitioning-strategy"><span><strong>Our quest for the optimal partitioning strategy</strong></span><svg aria-hidden="true" data-heading-link-icon="true" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path d="M13.5438 10.456C12.7247 9.63723 11.614 9.17728 10.4558 9.17728C9.29766 9.17728 8.18692 9.63723 7.36781 10.456L4.27881 13.544C3.45969 14.3631 2.99951 15.4741 2.99951 16.6325C2.99951 17.7909 3.45969 18.9019 4.27881 19.721C5.09793 20.5401 6.2089 21.0003 7.36731 21.0003C8.52572 21.0003 9.63669 20.5401 10.4558 19.721L11.9998 18.177" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path><path d="M10.4561 13.544C11.2752 14.3628 12.3859 14.8227 13.5441 14.8227C14.7022 14.8227 15.8129 14.3628 16.6321 13.544L19.7211 10.456C20.5402 9.63687 21.0004 8.52591 21.0004 7.36749C21.0004 6.20908 20.5402 5.09811 19.7211 4.27899C18.9019 3.45987 17.791 2.99969 16.6326 2.99969C15.4741 2.99969 14.3632 3.45987 13.5441 4.27899L12.0001 5.82299" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></a></h2><p>We ingest over 6TB of data daily in our cloud clusters. This volume made it essential that we select a partitioning strategy capable of efficiently handling our two most important query patterns: point queries and range queries. Point queries find specific records by their unique identifiers and/or attributes, such as by id, while range queries retrieve sets of records where a specific value falls within a defined upper and lower boundary. An example of a common range query is time periods, such as querying for all records created within the last 24 hours. As much as possible, we knew we’d need to ensure even data distribution across partitions to prevent what we called "hot partitions," where a disproportionate amount of rows concentrate in specific partitions. Such imbalances could cause tasks like autovacuum to time out as a single partition grows, and force point queries to scan excessive amounts of data. The goal was to maintain consistent performance, while accommodating our massive data ingestion requirements. In our quest for the optimal partitioning strategy, we considered four different approaches:</p><h3 id="strategy-1-partition-based-on-created_at"><a href="#strategy-1-partition-based-on-created_at"><span>Strategy 1: Partition based on <code>created_at</code></span><svg aria-hidden="true" data-heading-link-icon="true" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path d="M13.5438 10.456C12.7247 9.63723 11.614 9.17728 10.4558 9.17728C9.29766 9.17728 8.18692 9.63723 7.36781 10.456L4.27881 13.544C3.45969 14.3631 2.99951 15.4741 2.99951 16.6325C2.99951 17.7909 3.45969 18.9019 4.27881 19.721C5.09793 20.5401 6.2089 21.0003 7.36731 21.0003C8.52572 21.0003 9.63669 20.5401 10.4558 19.721L11.9998 18.177" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path><path d="M10.4561 13.544C11.2752 14.3628 12.3859 14.8227 13.5441 14.8227C14.7022 14.8227 15.8129 14.3628 16.6321 13.544L19.7211 10.456C20.5402 9.63687 21.0004 8.52591 21.0004 7.36749C21.0004 6.20908 20.5402 5.09811 19.7211 4.27899C18.9019 3.45987 17.791 2.99969 16.6326 2.99969C15.4741 2.99969 14.3632 3.45987 13.5441 4.27899L12.0001 5.82299" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></a></h3><p>With this strategy, we would partition the data such that records created on the same day would be stored in a single table. For example, the sub-tables would look like:</p><div><pre class="shiki shiki-themes tines-light tines-dark" style="--shiki-light:#2e2d36;--shiki-dark:#f8f4f0;--shiki-light-bg:#00000000;--shiki-dark-bg:#00000000" tabindex="0"><code><span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">event_payloads_p2025_03_21</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> --</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Contains</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> all</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> records</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> from</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> March</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 21</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 2025</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">event_payloads_p2025_03_22</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> --</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Contains</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> all</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> records</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> from</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> March</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 22</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 2025</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">event_payloads_p2025_03_23</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> --</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Contains</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> all</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> records</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> from</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> March</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 23</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 2025</span></span></code></pre></div><p>A time-based partitioning strategy like this works well for cleaning up expired data. In our app, users can choose how long to keep their data for (up to a year). With time-based partitioning, that meant we could safely drop an entire partition after a year. In order to drop old partitions and create new ones on a schedule, we could use a ruby gem called <a href="https://github.com/honeybadger-io/pg_partition_manager"><code>pg_partition_manager</code></a>. This gem simplifies the management of partitioned tables in PostgreSQL by programmatically creating new partitions and dropping old ones as data ages out. Although it sounded promising, time-based partitioning complicated point queries. There are several places in our app where we query for <code>event_payloads</code> by id and/or some other specific value. With this strategy, PostgreSQL had no way of knowing which partition contained the target records. Therefore, it had to scan every partition until it found the <code>event_payload(s)</code> with the specified values.</p><p>Here is an example query that we might have in our app:</p><div><pre class="shiki shiki-themes tines-light tines-dark" style="--shiki-light:#2e2d36;--shiki-dark:#f8f4f0;--shiki-light-bg:#00000000;--shiki-dark-bg:#00000000" tabindex="0"><code><span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">SELECT</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> *</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> FROM</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">WHERE</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> id</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> IN</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1088692569</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1088694904</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1088696787</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1089012063</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1089012074</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) </span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">AND</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> key</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB"> '</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">get_alert_details</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">'</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">;</span></span></code></pre></div><p>This was the query plan partitioning by day (truncated):</p><div><pre class="shiki shiki-themes tines-light tines-dark" style="--shiki-light:#2e2d36;--shiki-dark:#f8f4f0;--shiki-light-bg:#00000000;--shiki-dark-bg:#00000000" tabindex="0"><code><span class="line"><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB">Limit</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">207.43</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.207</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">48</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">22</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">125</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.148</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.0</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">155</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Buffers</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> shared</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> hit</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">44</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> Sort</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">207.43</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.207</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">48</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">22</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">125</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.147</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.0</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">153</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Sort</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Key</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">id</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> DESC</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Sort</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Method</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> quicksort</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Memory</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> 25</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">kB</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Buffers</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> shared</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> hit</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">44</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> Append</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.29</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.206</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">94</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">22</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">125</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.141</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.0</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">147</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Buffers</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> shared</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> hit</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">44</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Scan</span><span style="--shiki-light:#A54B7A;--shiki-dark:#F486B8"> using</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_p2025_03_21_tenant_id_idx</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> on event_payloads_p2025_03_21 event_payloads_1 (cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.29</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.4</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">32</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">202</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.025</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.0</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">025</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Cond</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">tenant_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 24020</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Filter</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (((</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">key</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)::</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">text</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB"> '</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">get_alert_details</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">'</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">::</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">text</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) </span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB">AND</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> ANY</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">'</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">{1088692569,1088694904,1088696787,1089012063,1089012074}</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">'</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">::</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">bigint</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">[])))</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Buffers</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> shared</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> hit</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">2</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Scan</span><span style="--shiki-light:#A54B7A;--shiki-dark:#F486B8"> using</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_p2025_03_22_tenant_id_idx</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> on event_payloads_p2025_03_22 event_payloads_2 (cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.29</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.4</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">32</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">202</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.015</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.0</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">015</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Cond</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">tenant_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 24020</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Filter</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (((</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">key</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)::</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">text</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB"> '</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">get_alert_details</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">'</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">::</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">text</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) </span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB">AND</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> ANY</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">'</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">{1088692569,1088694904,1088696787,1089012063,1089012074}</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">'</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">::</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">bigint</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">[])))</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Buffers</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> shared</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> hit</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">2</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Scan</span><span style="--shiki-light:#A54B7A;--shiki-dark:#F486B8"> using</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_p2025_03_23_tenant_id_idx</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> on event_payloads_p2025_03_23 event_payloads_3 (cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.29</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.4</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">32</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">202</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.016</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.0</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">016</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Cond</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">tenant_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 24020</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Filter</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (((</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">key</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)::</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">text</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB"> '</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">get_alert_details</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">'</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">::</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">text</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) </span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB">AND</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> ANY</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">'</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">{1088692569,1088694904,1088696787,1089012063,1089012074}</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">'</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">::</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">bigint</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">[])))</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Buffers</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> shared</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> hit</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">2</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">...</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Bitmap</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Heap</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Scan</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> on</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_p2025_03_26</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> event_payloads_6</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">4.17</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.11</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">31</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">96</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.005</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.0</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">005</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Recheck</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Cond</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">tenant_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 24020</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Filter</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (((</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">key</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)::</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">text</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB"> '</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">get_alert_details</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">'</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">::</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">text</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) </span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB">AND</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> ANY</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">'</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">{1088692569,1088694904,1088696787,1089012063,1089012074}</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">'</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">::</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">bigint</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">[])))</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Buffers</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> shared</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> hit</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">2</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Bitmap</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Scan</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> on</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> event_payloads_p2025_03_26_tenant_id_idx</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.00</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.4</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">17</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">3</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.003</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.0</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">003</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Cond</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">tenant_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 24020</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Buffers</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> shared</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> hit</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">2</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Bitmap</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Heap</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Scan</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> on</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_p2025_03_27</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> event_payloads_7</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">4.17</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.11</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">31</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">96</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.002</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.0</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">003</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Recheck</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Cond</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">tenant_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 24020</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Filter</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (((</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">key</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)::</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">text</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB"> '</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">get_alert_details</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">'</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">::</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">text</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) </span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB">AND</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> ANY</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">'</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">{1088692569,1088694904,1088696787,1089012063,1089012074}</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">'</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">::</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">bigint</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">[])))</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Buffers</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> shared</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> hit</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">2</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Bitmap</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Scan</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> on</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> event_payloads_p2025_03_27_tenant_id_idx</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.00</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.4</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">17</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">3</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.002</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.0</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">002</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Cond</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">tenant_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 24020</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Buffers</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> shared</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> hit</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">2</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Bitmap</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Heap</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Scan</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> on</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_p2025_03_28</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> event_payloads_8</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">4.17</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.11</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">31</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">96</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.002</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.0</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">002</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Recheck</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Cond</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">tenant_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 24020</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Filter</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (((</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">key</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)::</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">text</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB"> '</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">get_alert_details</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">'</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">::</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">text</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) </span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB">AND</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> ANY</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">'</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">{1088692569,1088694904,1088696787,1089012063,1089012074}</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">'</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">::</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">bigint</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">[])))</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Buffers</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> shared</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> hit</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">2</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Bitmap</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Scan</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> on</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> event_payloads_p2025_03_28_tenant_id_idx</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.00</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.4</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">17</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">3</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.002</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.0</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">002</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Cond</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">tenant_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 24020</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Buffers</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> shared</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> hit</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">2</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">...</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> </span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> </span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">Planning</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Buffers</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> shared</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> hit</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">32</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">Planning</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 1.137</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> ms</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">Execution</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 5.559</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> ms</span></span></code></pre></div><p>The query planner couldn't do any partition pruning because we couldn't filter by <code>created_at</code>. Partition pruning works by only searching partitions that can contain records of interest, but since our records of interest could have been created on any day, all partitions had to be searched. The scanning of every partition led to unacceptably high CPU, so we ruled this strategy out.</p><h3 id="strategy-2-partition-based-on-root_story_id"><a href="#strategy-2-partition-based-on-root_story_id"><span>Strategy 2: Partition based on <code>root_story_id</code></span><svg aria-hidden="true" data-heading-link-icon="true" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path d="M13.5438 10.456C12.7247 9.63723 11.614 9.17728 10.4558 9.17728C9.29766 9.17728 8.18692 9.63723 7.36781 10.456L4.27881 13.544C3.45969 14.3631 2.99951 15.4741 2.99951 16.6325C2.99951 17.7909 3.45969 18.9019 4.27881 19.721C5.09793 20.5401 6.2089 21.0003 7.36731 21.0003C8.52572 21.0003 9.63669 20.5401 10.4558 19.721L11.9998 18.177" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path><path d="M10.4561 13.544C11.2752 14.3628 12.3859 14.8227 13.5441 14.8227C14.7022 14.8227 15.8129 14.3628 16.6321 13.544L19.7211 10.456C20.5402 9.63687 21.0004 8.52591 21.0004 7.36749C21.0004 6.20908 20.5402 5.09811 19.7211 4.27899C18.9019 3.45987 17.791 2.99969 16.6326 2.99969C15.4741 2.99969 14.3632 3.45987 13.5441 4.27899L12.0001 5.82299" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></a></h3><p>In our app, each of these <code>event_payloads</code> gets created within <a href="/docs/stories/">a “story”</a>. It’s a one-to-many relationship, with each story having many <code>event_payloads</code>, but each <code>event_payload</code> belonging to only one story, which can be identified by its <code>root_story_id</code>. The idea with this strategy was to have a fixed number of partitions and use <a href="https://www.postgresql.org/docs/current/ddl-partitioning.html#DDL-PARTITIONING-OVERVIEW-HASH">PostgreSQL’s hash-based partitioning</a>.</p><p>We chose 16 tables, and the creation of these tables looked like this:</p><div><pre class="shiki shiki-themes tines-light tines-dark" style="--shiki-light:#2e2d36;--shiki-dark:#f8f4f0;--shiki-light-bg:#00000000;--shiki-dark-bg:#00000000" tabindex="0"><code><span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> def</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> self</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">create_partitioned_tables</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> # </span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">Create</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> the</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> parent</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> table</span><span style="--shiki-light:#A54B7A;--shiki-dark:#F486B8"> with</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> first</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">-</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">level</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> partitioning</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> on</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> root_story_id</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> sql</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> <<~</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">SQL</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> CREATE</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> TABLE</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> IF</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NOT</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> EXISTS</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> event_payloads</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> id</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> BIGSERIAL</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NOT</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NULL</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> key</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> CHARACTER</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> VARYING</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NOT</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NULL</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> output</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> JSON</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> tenant_id</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> BIGINT</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NOT</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NULL</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> root_story_id</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> BIGINT</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NOT</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NULL</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> created_at</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> TIMESTAMP</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> WITHOUT</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> TIME</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> ZONE</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NOT</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NULL</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> updated_at</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> TIMESTAMP</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> WITHOUT</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> TIME</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> ZONE</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NOT</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NULL</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> PRIMARY</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> KEY</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">root_story_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> id</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> ) </span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">PARTITION</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> BY</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> HASH</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">root_story_id</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> SQL</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> # </span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">Create</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 16</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> partitions</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> for</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> partitioning</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> by</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> root_story_id</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0..15</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">each</span><span style="--shiki-light:#A54B7A;--shiki-dark:#F486B8"> do</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> |</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">i</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">|</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> sql</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> +=</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> <<~</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">SQL</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> CREATE</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> TABLE</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">#</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">{</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">i</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">}</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> PARTITION</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> OF</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> FOR</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> VALUES</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> WITH</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">modulus</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 16</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> remainder</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> #</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">{</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">i</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">}</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> SQL</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> end</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> sql</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> +=</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> <<~</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">SQL</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> CREATE</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> INDEX</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> IF</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NOT</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> EXISTS</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> index_event_payloads_on_tenant_id</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> ON</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> event_payloads</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">(</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">tenant_id</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> SQL</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> ActiveRecord</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">:</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">Base</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">connection</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB">execute</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">(</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">sql</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> end</span></span></code></pre></div><p>After PostgreSQL applied its own hash function to the <code>root_story_id</code>, the hashed value would determine where the <code>event_payloads</code> for that story would be stored. For example, if the hashed value for a <code>root_story_id</code>, modulo 16, was 2, records for that story would be stored in <code>event_payloads_2</code>. While it made sense to have all of the data for a story in the same partition, this would create the “hot partitions” we were trying to avoid. A few busy stories creating a lot of <code>event_payloads</code> would disproportionately ingest data into their respective partitions, and the size of those tables would grow much faster relative to other tables getting populated by less busy stories. We passed on this strategy in the interest of more even data distribution.</p><h3 id="strategy-3-partition-based-on-id-with-an-index-on-root_story_id"><a href="#strategy-3-partition-based-on-id-with-an-index-on-root_story_id"><span>Strategy 3: Partition based on <code>id</code>, with an index on <code>root_story_id</code></span><svg aria-hidden="true" data-heading-link-icon="true" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path d="M13.5438 10.456C12.7247 9.63723 11.614 9.17728 10.4558 9.17728C9.29766 9.17728 8.18692 9.63723 7.36781 10.456L4.27881 13.544C3.45969 14.3631 2.99951 15.4741 2.99951 16.6325C2.99951 17.7909 3.45969 18.9019 4.27881 19.721C5.09793 20.5401 6.2089 21.0003 7.36731 21.0003C8.52572 21.0003 9.63669 20.5401 10.4558 19.721L11.9998 18.177" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path><path d="M10.4561 13.544C11.2752 14.3628 12.3859 14.8227 13.5441 14.8227C14.7022 14.8227 15.8129 14.3628 16.6321 13.544L19.7211 10.456C20.5402 9.63687 21.0004 8.52591 21.0004 7.36749C21.0004 6.20908 20.5402 5.09811 19.7211 4.27899C18.9019 3.45987 17.791 2.99969 16.6326 2.99969C15.4741 2.99969 14.3632 3.45987 13.5441 4.27899L12.0001 5.82299" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></a></h3><p>This approach used the same hash-based partitioning technique as described in Strategy 2, but instead of hashing the <code>root_story_id</code>, we hashed the <code>id</code> of the <code>event_payload</code> itself. The index on <code>root_story_id</code> would come in handy because anywhere we query for events in our app, we know what story we are interested in, so we could use a <code>WHERE</code> clause to filter for a certain <code>root_story_id</code>.</p><div><pre class="shiki shiki-themes tines-light tines-dark" style="--shiki-light:#2e2d36;--shiki-dark:#f8f4f0;--shiki-light-bg:#00000000;--shiki-dark-bg:#00000000" tabindex="0"><code><span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">CREATE</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> TABLE</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> event_payloads</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> id</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> bigserial</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> key</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> text</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NOT</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NULL</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> output</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> jsonb</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> created_at</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> timestamp</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NOT</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NULL</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> updated_at</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> timestamp</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NOT</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NULL</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> root_story_id</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> bigint</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NOT</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NULL</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> PRIMARY</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> KEY</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> root_story_id</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) </span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">PARTITION</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> BY</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> HASH</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">id</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">;</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">CREATE</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> TABLE</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_0</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> PARTITION</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> OF</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> FOR</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> VALUES</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> WITH</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">modulus</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 4</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> remainder</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 0</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">CREATE</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> TABLE</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_1</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> PARTITION</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> OF</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> FOR</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> VALUES</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> WITH</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">modulus</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 4</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> remainder</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">CREATE</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> TABLE</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_2</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> PARTITION</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> OF</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> FOR</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> VALUES</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> WITH</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">modulus</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 4</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> remainder</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 2</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">CREATE</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> TABLE</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_3</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> PARTITION</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> OF</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> FOR</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> VALUES</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> WITH</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">modulus</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 4</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> remainder</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 3</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">;</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">CREATE</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> INDEX</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> idx_event_payloads_root_story_id</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> ON</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> event_payloads</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">(</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">root_story_id</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">;</span></span></code></pre></div><p>This approach ensured even data distribution because where an <code>event_payload</code> ended up wasn’t dependent on the context it was created in at all. Therefore, the “hot partition” problem was eliminated.</p><p>Point queries searching for just one, or multiple, specific <code>event_payload(s)</code> by <code>id(s)</code> were extremely efficient, immediately searching the partition containing the <code>event_payload(s)</code> in question:</p><div><pre class="shiki shiki-themes tines-light tines-dark" style="--shiki-light:#2e2d36;--shiki-dark:#f8f4f0;--shiki-light-bg:#00000000;--shiki-dark-bg:#00000000" tabindex="0"><code><span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">EXPLAIN</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> ANALYZE</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">SELECT</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> *</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> FROM</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> </span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">WHERE</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 1234</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> AND</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> root_story_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 100</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">;</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">Index</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Scan</span><span style="--shiki-light:#A54B7A;--shiki-dark:#F486B8"> using</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_2_pkey</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> on event_payloads_2 event_payloads (cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.28</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.8</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">30</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">64</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.016</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.0</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">017</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Cond</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> ((</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 1234</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) </span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB">AND</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">root_story_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 100</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">))</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">Planning</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 0.340</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> ms</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">Execution</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 0.039</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> ms</span></span></code></pre></div><p>Querying for all <code>event_payloads</code> in a story forced a scan of all partitions, but the index on <code>root_story_id</code> was used effectively:</p><div><pre class="shiki shiki-themes tines-light tines-dark" style="--shiki-light:#2e2d36;--shiki-dark:#f8f4f0;--shiki-light-bg:#00000000;--shiki-dark-bg:#00000000" tabindex="0"><code><span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">EXPLAIN</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> ANALYZE</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">SELECT</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> *</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> FROM</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> </span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">WHERE</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> root_story_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 100</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">;</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB">Append</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.15</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.66</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">11</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1000</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">64</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.014</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.0</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">218</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1000</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Scan</span><span style="--shiki-light:#A54B7A;--shiki-dark:#F486B8"> using</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_0_root_story_id_idx</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> on event_payloads_0 event_payloads_1 (cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.15</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.14</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">32</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">238</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">64</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.013</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.0</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">045</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">238</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Cond</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">root_story_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 100</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Scan</span><span style="--shiki-light:#A54B7A;--shiki-dark:#F486B8"> using</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_1_root_story_id_idx</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> on event_payloads_1 event_payloads_2 (cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.15</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.15</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">82</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">267</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">64</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.008</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.0</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">042</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">267</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Cond</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">root_story_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 100</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Scan</span><span style="--shiki-light:#A54B7A;--shiki-dark:#F486B8"> using</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_2_root_story_id_idx</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> on event_payloads_2 event_payloads_3 (cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.15</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.15</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">63</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">256</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">64</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.007</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.0</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">039</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">256</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Cond</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">root_story_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 100</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Scan</span><span style="--shiki-light:#A54B7A;--shiki-dark:#F486B8"> using</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_3_root_story_id_idx</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> on event_payloads_3 event_payloads_4 (cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.15</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.15</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">34</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">239</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">64</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.007</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.0</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">035</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">239</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Cond</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">root_story_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 100</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">Planning</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 0.409</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> ms</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">Execution</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 0.284</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> ms</span></span></code></pre></div><p>However, range queries, particularly ones used for expiring records based on <code>created_at</code> were inefficient, so we decided to pass on this approach.</p><h3 id="strategy-4-two-level-partitioning-by-root_story_id-and-id"><a href="#strategy-4-two-level-partitioning-by-root_story_id-and-id"><span>Strategy 4: Two-level partitioning by <code>root_story_id</code> and <code>id</code></span><svg aria-hidden="true" data-heading-link-icon="true" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path d="M13.5438 10.456C12.7247 9.63723 11.614 9.17728 10.4558 9.17728C9.29766 9.17728 8.18692 9.63723 7.36781 10.456L4.27881 13.544C3.45969 14.3631 2.99951 15.4741 2.99951 16.6325C2.99951 17.7909 3.45969 18.9019 4.27881 19.721C5.09793 20.5401 6.2089 21.0003 7.36731 21.0003C8.52572 21.0003 9.63669 20.5401 10.4558 19.721L11.9998 18.177" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path><path d="M10.4561 13.544C11.2752 14.3628 12.3859 14.8227 13.5441 14.8227C14.7022 14.8227 15.8129 14.3628 16.6321 13.544L19.7211 10.456C20.5402 9.63687 21.0004 8.52591 21.0004 7.36749C21.0004 6.20908 20.5402 5.09811 19.7211 4.27899C18.9019 3.45987 17.791 2.99969 16.6326 2.99969C15.4741 2.99969 14.3632 3.45987 13.5441 4.27899L12.0001 5.82299" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></a></h3><p>The idea with this approach was to strike a balance between optimal data distribution and efficient queries. The first level of partitions hashed by <code>root_story_id</code> as described in Strategy 2, but within each of those partitions, we introduced a second level of partitions, hashed by the <code>id</code> of the record itself as described in Strategy 3. Therefore, we had 128 partitions created like so:</p><div><pre class="shiki shiki-themes tines-light tines-dark" style="--shiki-light:#2e2d36;--shiki-dark:#f8f4f0;--shiki-light-bg:#00000000;--shiki-dark-bg:#00000000" tabindex="0"><code><span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> def</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> self</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">create_partitioned_tables</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> # </span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">Create</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> the</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> parent</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> table</span><span style="--shiki-light:#A54B7A;--shiki-dark:#F486B8"> with</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> first</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">-</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">level</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> partitioning</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> on</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> root_story_id</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> sql</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> <<~</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">SQL</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> CREATE</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> TABLE</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> IF</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NOT</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> EXISTS</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> event_payloads</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> id</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> BIGSERIAL</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NOT</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NULL</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> key</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> CHARACTER</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> VARYING</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NOT</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NULL</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> output</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> JSON</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> tenant_id</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> BIGINT</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NOT</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NULL</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> root_story_id</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> BIGINT</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NOT</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NULL</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> created_at</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> TIMESTAMP</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> WITHOUT</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> TIME</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> ZONE</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NOT</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NULL</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> updated_at</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> TIMESTAMP</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> WITHOUT</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> TIME</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> ZONE</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NOT</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NULL</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> PRIMARY</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> KEY</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">root_story_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> id</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> ) </span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">PARTITION</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> BY</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> HASH</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">root_story_id</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> SQL</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> # </span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">Create</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 16</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> first</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">-</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">level</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> partitions</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> for</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> partitioning</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> by</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> root_story_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> each</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> sub</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">-</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">partitioned</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> by</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> id</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0..15</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">each</span><span style="--shiki-light:#A54B7A;--shiki-dark:#F486B8"> do</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> |</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">i</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">|</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> sql</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> +=</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> <<~</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">SQL</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> CREATE</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> TABLE</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">#</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">{</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">i</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">}</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> PARTITION</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> OF</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> FOR</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> VALUES</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> WITH</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">modulus</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 16</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> remainder</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> #</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">{</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">i</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">}</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> PARTITION</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> BY</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> HASH</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">id</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> SQL</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> # </span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">Create</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 8</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> sub</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">-</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">partitions</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> for</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> each</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> first</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">-</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">level</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> partition</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> partitioning</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> by</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> id</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0..7</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">each</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB"> {</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> |</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">j</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">|</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> sql</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> +=</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> <<~</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">SQL</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB"> }</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> CREATE</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> TABLE</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">#</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">{</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">i</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">}</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">_</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">#</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">{</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">j</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">}</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> PARTITION</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> OF</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">#</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">{</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">i</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">}</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> FOR</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> VALUES</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> WITH</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">modulus</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 8</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> remainder</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> #</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">{</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">j</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">}</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> SQL</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> end</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> sql</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> +=</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> <<~</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">SQL</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> CREATE</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> INDEX</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> IF</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> NOT</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> EXISTS</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> index_event_payloads_on_tenant_id</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> ON</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> event_payloads</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">(</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">tenant_id</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> SQL</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> ActiveRecord</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">:</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">Base</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">connection</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB">execute</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">(</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">sql</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> end</span></span></code></pre></div><p>This gave us the benefit of not having to scan all partitions when looking for all records belonging to a story (only 8/128 as opposed to 4/4), but also distributed the <code>event_payloads</code> for any one story across eight partitions, mitigating the “hot partition” problem.</p><p>Point queries searching for specific <code>id(s)</code> using the <code>root_story_id</code> were extremely efficient, searching only the partitions that contained the records we were looking for:</p><div><pre class="shiki shiki-themes tines-light tines-dark" style="--shiki-light:#2e2d36;--shiki-dark:#f8f4f0;--shiki-light-bg:#00000000;--shiki-dark-bg:#00000000" tabindex="0"><code><span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">SELECT</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> *</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> FROM</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">WHERE</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> id</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> IN</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">54472978</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 177425082</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) </span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">AND</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> root_story_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 238</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">;</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> Append</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.42</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.25</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">77</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">2</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">479</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.027</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.0</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">051</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">2</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Scan</span><span style="--shiki-light:#A54B7A;--shiki-dark:#F486B8"> using</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_0_2_pkey</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> on event_payloads_0_2 event_payloads_1 (cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.42</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.12</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">88</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">480</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.026</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.0</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">032</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Cond</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> ((</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">root_story_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 238</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) </span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB">AND</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> ANY</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">'</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">{54472978,177425082}</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">'</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">::</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">bigint</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">[])))</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Scan</span><span style="--shiki-light:#A54B7A;--shiki-dark:#F486B8"> using</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_0_5_pkey</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> on event_payloads_0_5 event_payloads_2 (cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.42</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.12</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">88</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">478</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.017</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.0</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">017</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Cond</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> ((</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">root_story_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 238</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) </span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB">AND</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> ANY</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">'</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">{54472978,177425082}</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">'</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">::</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">bigint</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">[])))</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Planning</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 0.306</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> ms</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Execution</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 0.098</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> ms</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">(</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">7</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span></code></pre></div><p>Queries looking for all records belonging to a story were also efficient, because partition pruning made it so that only eight top-level partitions had to be searched:</p><div><pre class="shiki shiki-themes tines-light tines-dark" style="--shiki-light:#2e2d36;--shiki-dark:#f8f4f0;--shiki-light-bg:#00000000;--shiki-dark-bg:#00000000" tabindex="0"><code><span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">SELECT</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> *</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> FROM</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">WHERE</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> root_story_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 238</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">;</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> Append</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.00</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.469871</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">09</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">2298420</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">480</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.006</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.4744</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">669</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">2415908</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Seq</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Scan</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> on</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_0_0</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> event_payloads_1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.00</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.57293</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">60</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">287234</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">483</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.005</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.491</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">770</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">301253</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Filter</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">root_story_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 238</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Rows</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Removed</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> by</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Filter</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 304997</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Seq</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Scan</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> on</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_0_1</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> event_payloads_2</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.00</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.57213</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">86</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">286518</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">483</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.164</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.560</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">221</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">301676</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Filter</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">root_story_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 238</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Rows</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Removed</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> by</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Filter</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 304120</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Seq</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Scan</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> on</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_0_2</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> event_payloads_3</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.00</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.57381</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">71</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">290054</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">480</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.175</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.552</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">702</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">302427</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Filter</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">root_story_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 238</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Rows</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Removed</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> by</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Filter</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 305111</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Seq</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Scan</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> on</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_0_3</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> event_payloads_4</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.00</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.57296</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">16</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">285988</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">478</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.153</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.581</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">496</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">301111</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Filter</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">root_story_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 238</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Rows</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Removed</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> by</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Filter</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 303883</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Seq</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Scan</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> on</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_0_4</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> event_payloads_5</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.00</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.57296</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">96</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">289212</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">480</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.178</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.573</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">105</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">302489</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Filter</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">root_story_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 238</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Rows</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Removed</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> by</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Filter</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 304290</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Seq</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Scan</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> on</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_0_5</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> event_payloads_6</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.00</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.57354</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">15</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">284877</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">478</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.159</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.571</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">096</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">302068</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Filter</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">root_story_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 238</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Rows</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Removed</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> by</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Filter</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 305836</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Seq</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Scan</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> on</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_0_6</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> event_payloads_7</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.00</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.57265</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">78</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">284224</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">480</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.149</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.595</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">128</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">302069</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Filter</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">root_story_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 238</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Rows</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Removed</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> by</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Filter</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 304993</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Seq</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Scan</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> on</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_0_7</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> event_payloads_8</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.00</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.57276</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">76</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">290313</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">479</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.173</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.626</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">301</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">302815</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Filter</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">root_story_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 238</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Rows</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Removed</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> by</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Filter</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 303950</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Planning</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 2.565</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> ms</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Execution</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 4848.421</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> ms</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">(</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">27</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span></code></pre></div><p>We concluded that this strategy provided the benefits that we found with the other strategies, while mitigating the shortcomings. It would scale well on both our multi-tenant clusters, where query efficiency is key, and our single-tenant clusters, where we risked a few busy stories creating “hot partitions”. In order to solve the problem of inefficient range queries, we eliminated the need to filter by <code>created_at</code> at all when cleaning up <code>event_payload</code> records. Instead of expiring <code>event_payloads</code> after their associated <code>event</code> was deleted, we pivoted towards deleting them inline with their <code>event</code> like so:</p><div><pre class="shiki shiki-themes tines-light tines-dark" style="--shiki-light:#2e2d36;--shiki-dark:#f8f4f0;--shiki-light-bg:#00000000;--shiki-dark-bg:#00000000" tabindex="0"><code><span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> query</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> <<~</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">SQL</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> DELETE</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> FROM</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> events</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> WHERE</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> ANY</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">(</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">ARRAY</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">[:</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">ids_to_delete</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">])</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> RETURNING</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payload_id</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> SQL</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> sanitized_query</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> ActiveRecord</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">:</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">Base</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB">sanitize_sql_array</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">([</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">query</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB"> {</span><span style="--shiki-light:#6956A8;--shiki-dark:#A990F5"> ids_to_delete</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> batch</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB">map</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">(</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">&</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">:</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">id</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) </span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">}</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">])</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> result</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> ApplicationRecord</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB">execute_write_query</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">(</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">sanitized_query</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">to_a</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payload_ids</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> result</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">filter_map</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB"> {</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> |</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">row</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">|</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> row</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">[</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">event_payload_id</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">] </span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">}</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#A54B7A;--shiki-dark:#F486B8"> if</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payload_ids</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">any</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">?</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> EventPayload</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB">delete_by_ids</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">(</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">event_payload_ids</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> story</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">live_root_story_id</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> end</span></span></code></pre></div><h2 id="the-journey"><a href="#the-journey"><span>The journey</span><svg aria-hidden="true" data-heading-link-icon="true" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path d="M13.5438 10.456C12.7247 9.63723 11.614 9.17728 10.4558 9.17728C9.29766 9.17728 8.18692 9.63723 7.36781 10.456L4.27881 13.544C3.45969 14.3631 2.99951 15.4741 2.99951 16.6325C2.99951 17.7909 3.45969 18.9019 4.27881 19.721C5.09793 20.5401 6.2089 21.0003 7.36731 21.0003C8.52572 21.0003 9.63669 20.5401 10.4558 19.721L11.9998 18.177" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path><path d="M10.4561 13.544C11.2752 14.3628 12.3859 14.8227 13.5441 14.8227C14.7022 14.8227 15.8129 14.3628 16.6321 13.544L19.7211 10.456C20.5402 9.63687 21.0004 8.52591 21.0004 7.36749C21.0004 6.20908 20.5402 5.09811 19.7211 4.27899C18.9019 3.45987 17.791 2.99969 16.6326 2.99969C15.4741 2.99969 14.3632 3.45987 13.5441 4.27899L12.0001 5.82299" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></a></h2><p>Deciding on a partitioning strategy was just the beginning of this project. Next, we set up the partitions as described in Strategy 4 on a test cluster. With the partitions in place, our general approach was to deploy code that relied on the <code>event_payloads</code> table everywhere we currently used the <code>output_payloads</code> table, load test, analyze performance, make adjustments, repeat. Load testing meant running a few busy stories on the test cluster, generating tons of writes and reads on the table. We tracked the performance in AWS Aurora/RDS console, identifying queries that caused high database load. We used PostgreSQL’s <code>EXPLAIN ANALYZE</code> tool in order to see how PostgreSQL was planning and executing resource intensive queries. From there, we could look for ways to optimize.</p><p>One thing that became apparent very early was that every query would have to have a <code>WHERE</code> clause on <code>root_story_id</code> in order to force index scans. </p><p>For example:</p><figure class="ImageBlock-module-scss-module__0Ef4dq__imageBlock"><img src="https://www.datocms-assets.com/55802/1768315778-screenshot-2025-04-14-at-3-07-20-pm.png?auto=format%2Ccompress&fit=max&q=90&w=2000&auto=format,compress&q=90&w=2000&fit=max" alt="" width="1832" height="750" loading="lazy"/></figure><figure class="ImageBlock-module-scss-module__0Ef4dq__imageBlock"><img src="https://www.datocms-assets.com/55802/1768315778-screenshot-2025-04-14-at-4-11-38-pm.png?auto=format%2Ccompress&fit=max&q=90&w=2000&auto=format,compress&q=90&w=2000&fit=max" alt="" width="477" height="130" loading="lazy"/></figure><div><pre class="shiki shiki-themes tines-light tines-dark" style="--shiki-light:#2e2d36;--shiki-dark:#f8f4f0;--shiki-light-bg:#00000000;--shiki-dark-bg:#00000000" tabindex="0"><code><span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">EXPLAIN</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> ANALYZE</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">SELECT</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB"> "</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">event_payloads</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">*</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">FROM</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB"> "</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">event_payloads</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">WHERE</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB"> "</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">event_payloads</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">tenant_id</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 1</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> AND</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB"> "</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">event_payloads</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">id</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 14</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">LIMIT</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 1</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">;</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> Limit</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.42</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.12046</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">56</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">587</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">95.242</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.95</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">248</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> Append</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.42</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.192738</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">51</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">16</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">587</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">95.241</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.95</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">247</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Scan</span><span style="--shiki-light:#A54B7A;--shiki-dark:#F486B8"> using</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_0_0_pkey</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> on event_payloads_0_0 event_payloads_1 (cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.42</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.17027</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">20</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">483</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">11.138</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.11</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">138</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Cond</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 14</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Filter</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">tenant_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Scan</span><span style="--shiki-light:#A54B7A;--shiki-dark:#F486B8"> using</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_1_0_pkey</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> on event_payloads_1_0 event_payloads_2 (cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.41</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.9689</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">27</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">762</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.403</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.0</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">403</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Cond</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 14</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Filter</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">tenant_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Scan</span><span style="--shiki-light:#A54B7A;--shiki-dark:#F486B8"> using</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_2_0_pkey</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> on event_payloads_2_0 event_payloads_3 (cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.42</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.7860</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">12</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">604</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1.350</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.1</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">350</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Cond</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 14</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Filter</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">tenant_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Scan</span><span style="--shiki-light:#A54B7A;--shiki-dark:#F486B8"> using</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_3_0_pkey</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> on event_payloads_3_0 event_payloads_4 (cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.41</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.5262</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">14</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">564</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.766</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.0</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">766</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Cond</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 14</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Filter</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">tenant_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Scan</span><span style="--shiki-light:#A54B7A;--shiki-dark:#F486B8"> using</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_4_0_pkey</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> on event_payloads_4_0 event_payloads_5 (cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.41</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.4020</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">52</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">333</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.257</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.0</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">257</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Cond</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 14</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Filter</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">tenant_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Scan</span><span style="--shiki-light:#A54B7A;--shiki-dark:#F486B8"> using</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_5_0_pkey</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> on event_payloads_5_0 event_payloads_6 (cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.43</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.65567</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">71</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">453</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">42.546</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.42</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">546</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Cond</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 14</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Filter</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">tenant_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Scan</span><span style="--shiki-light:#A54B7A;--shiki-dark:#F486B8"> using</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_6_0_pkey</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> on event_payloads_6_0 event_payloads_7 (cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.42</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.6771</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">96</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">572</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">2.209</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.2</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">210</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Cond</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 14</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Filter</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">tenant_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Scan</span><span style="--shiki-light:#A54B7A;--shiki-dark:#F486B8"> using</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_7_0_pkey</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> on event_payloads_7_0 event_payloads_8 (cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.42</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.15250</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">86</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1204</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">7.273</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.7</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">273</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Cond</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 14</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Filter</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">tenant_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Scan</span><span style="--shiki-light:#A54B7A;--shiki-dark:#F486B8"> using</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_8_0_pkey</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> on event_payloads_8_0 event_payloads_9 (cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.41</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.4228</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">43</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">485</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1.094</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.1</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">094</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Cond</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 14</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Filter</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">tenant_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> ...</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> ...</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Planning</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 0.766</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> ms</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Execution</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 95.379</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> ms</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">(</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">52</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span></code></pre></div><p>Vs. also filtering for <code>root_story_id</code>:</p><div><pre class="shiki shiki-themes tines-light tines-dark" style="--shiki-light:#2e2d36;--shiki-dark:#f8f4f0;--shiki-light-bg:#00000000;--shiki-dark-bg:#00000000" tabindex="0"><code><span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">EXPLAIN</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> ANALYZE</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">SELECT</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB"> "</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">event_payloads</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">*</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">FROM</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB"> "</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">event_payloads</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">WHERE</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB"> "</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">event_payloads</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">tenant_id</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 1</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> AND</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB"> "</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">event_payloads</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">id</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 14</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> AND</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB"> "</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">event_payloads</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">root_story_id</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 5779</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">LIMIT</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 1</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">;</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> Limit</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.42</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.8</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">44</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">628</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.020</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.0</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">020</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> -></span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Scan</span><span style="--shiki-light:#A54B7A;--shiki-dark:#F486B8"> using</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payloads_15_0_pkey</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> on event_payloads_15_0 event_payloads (cost</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.42</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.8</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">44</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> width</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">628</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">actual</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">0.019</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">.0</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">019</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> loops</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Index</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Cond</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> ((</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">root_story_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 5779</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) </span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB">AND</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 14</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">))</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Filter</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> (</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">tenant_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 1</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Planning</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 0.168</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> ms</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> Execution</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> Time</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">:</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 0.041</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> ms</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">(</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847">6</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> rows</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span></code></pre></div><p>Here is another example where you can see the difference in database load by adding a filter on <code>root_story_id</code>, all other things kept the same:</p><figure class="ImageBlock-module-scss-module__0Ef4dq__imageBlock"><img src="https://www.datocms-assets.com/55802/1768315850-screenshot-2025-04-15-at-9-49-33-am.png?auto=format%2Ccompress&fit=max&q=90&w=2000&auto=format,compress&q=90&w=2000&fit=max" alt="" width="1319" height="271" loading="lazy"/></figure><figure class="ImageBlock-module-scss-module__0Ef4dq__imageBlock"><img src="https://www.datocms-assets.com/55802/1768315841-screenshot-2025-04-15-at-11-05-37-am.png?auto=format%2Ccompress&fit=max&q=90&w=2000&auto=format,compress&q=90&w=2000&fit=max" alt="" width="2184" height="406" loading="lazy"/></figure><p>Filtering for <code>root_story_id</code> helped to optimize <code>SELECT</code> queries, but they still didn’t perform as well as equivalent queries to the old table. A goal of this project was no regression from current behavior or performance, so we had some problem solving to do.</p><p>The queries on the <code>event_payloads</code> table were still causing higher CPU, and were less efficient than on the <code>output_payloads</code> table. This was because of what happens in PostgreSQL when you query partitions through the parent table. PostgreSQL must perform catalog lookups, particularly using <a href="https://www.postgresql.org/docs/current/catalog-pg-class.html">pg_class</a> and <a href="https://www.postgresql.org/docs/current/catalog-pg-inherits.html">pg_inherits</a>, and also perform its own hash calculation, to route each query to the correct partition. This results in significant overhead when you’re querying the table a lot, especially if you decide to use multi-level partitioning schemes like we did, where PostgreSQL must query the PostgreSQL catalog tables to identify the target partition. We do over 1 billion action runs a week in cloud, and this is one of the highest read code paths, so safe to say we’re querying this table a lot. For example, when we were doing something like:</p><div><pre class="shiki shiki-themes tines-light tines-dark" style="--shiki-light:#2e2d36;--shiki-dark:#f8f4f0;--shiki-light-bg:#00000000;--shiki-dark-bg:#00000000" tabindex="0"><code><span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">SELECT</span></span>
|
||
<span class="line"><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB"> "</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">event_payloads</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">*</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">FROM</span></span>
|
||
<span class="line"><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB"> "</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">event_payloads</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">WHERE</span></span>
|
||
<span class="line"><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB"> "</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">event_payloads</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">tenant_id</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 1</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> AND</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB"> "</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">event_payloads</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">id</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 14</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> AND</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB"> "</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">event_payloads</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">root_story_id</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 5779</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">;</span></span></code></pre></div><p>PostgresSQL had to do a catalog lookup to figure out which child partition of the <code>event_payloads</code> table that particular record belongs to. This catalog lookup added overhead, and made the query more CPU intensive (which also largely came from the hash calculation for the partition key) and slower, as opposed to querying a non-partitioned table.</p><p>In order to mitigate this issue, we reverse engineered the PostgreSQL hash-based partitioning logic so that we could derive which partition an <code>event_payload</code> record would be in and query that partition directly. More specifically, this required replicating the logic of PostgreSQL’s <a href="https://github.com/postgres/postgres/blob/master/src/backend/access/hash/hashfunc.c#L103-L113"><code>hashint8extended</code></a> function, which takes a value for the partition key, and a constant “seed” value defined by PostgreSQL in order to determine the integer that the key value hashes to. For example, if an <code>event_payload</code> had a <code>root_story_id</code> of <code>63</code>, and an <code>id</code> of <code>244</code>, we could use those two values to determine which of the first level partitions that <code>root_story_id</code> hashed to, and which second level partition that <code>id</code> hashed to. Therefore, we could build the name of the partition, something like <code>event_payloads_11_1</code>. This method of querying the partitions directly was 20-40x faster than their equivalent query relying on PostgreSQL’s catalog lookup.</p><p>Before reverse engineering PostgreSQL’s hash function:</p><figure class="ImageBlock-module-scss-module__0Ef4dq__imageBlock"><img src="https://www.datocms-assets.com/55802/1768315942-screenshot-2025-04-21-at-10-38-31-am.png?auto=format%2Ccompress&fit=max&q=90&w=2000&auto=format,compress&q=90&w=2000&fit=max" alt="" width="2588" height="1140" loading="lazy"/></figure><p>Vs. the control (old <code>output_payloads</code> table):</p><figure class="ImageBlock-module-scss-module__0Ef4dq__imageBlock"><img src="https://www.datocms-assets.com/55802/1768315942-screenshot-2025-05-01-at-2-52-38-pm.png?auto=format%2Ccompress&fit=max&q=90&w=2000&auto=format,compress&q=90&w=2000&fit=max" alt="" width="2632" height="468" loading="lazy"/></figure><p>Vs. after reverse engineering (notice no <code>SELECT</code>s on <code>event_payloads</code> generated enough load to be displayed anymore):</p><figure class="ImageBlock-module-scss-module__0Ef4dq__imageBlock"><img src="https://www.datocms-assets.com/55802/1768315942-screenshot-2025-05-02-at-10-43-16-am-1.png?auto=format%2Ccompress&fit=max&q=90&w=2000&auto=format,compress&q=90&w=2000&fit=max" alt="" width="2398" height="356" loading="lazy"/></figure><p>In order to make use of our ability to determine which partition <code>event_payloads</code> would be stored in, we defined our own <code>event_payload</code> function to override the default rails <code>event.event_payload</code>. Our function uses the <code>event_payload_id</code> of the <code>event</code> and our reverse engineered PostgreSQL hash function to query the <code>event_payload</code>’s partition for the record directly:</p><div><pre class="shiki shiki-themes tines-light tines-dark" style="--shiki-light:#2e2d36;--shiki-dark:#f8f4f0;--shiki-light-bg:#00000000;--shiki-dark-bg:#00000000" tabindex="0"><code><span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> sig</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB"> {</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> returns</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">(</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">T</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB">nilable</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">(</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">EventPayload</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)) </span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">}</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> def</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payload</span></span>
|
||
<span class="line"><span style="--shiki-light:#A54B7A;--shiki-dark:#F486B8"> return</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> unless</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payload_id</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">present</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">?</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> &&</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> story</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">present</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">?</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> EventPayload</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB">from_partition</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">(</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">T</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB">must</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">(</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">story</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">live_root_story_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> [</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">T</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB">must</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">(</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">event_payload_id</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)])</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">first</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> end</span></span></code></pre></div><p>This <code>from_partition</code> function uses the following helpers in order to derive the partition:</p><div><pre class="shiki shiki-themes tines-light tines-dark" style="--shiki-light:#2e2d36;--shiki-dark:#f8f4f0;--shiki-light-bg:#00000000;--shiki-dark-bg:#00000000" tabindex="0"><code><span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> sig</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB"> {</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> params</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">(</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">root_story_id</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">: </span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">Integer</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB">returns</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">(</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">String</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) </span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">}</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> def</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> self</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB">root_story_partition_name</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">(</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">root_story_id</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> root_story_partition</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> PgHashFunc</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB">calculate_partition_index_bigint</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">(</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> value</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">: </span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">root_story_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> num_partitions</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">: </span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">NUM_FIRST_LEVEL_PARTITIONS</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> )</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> [</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">TABLE_PREFIX</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> root_story_partition</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">]</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB">join</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">(</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">_</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> end</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> </span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> sig</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB"> {</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> params</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">(</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">root_story_id</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">: </span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">Integer</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> ids</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">: </span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">T</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">::</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">Array</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">[</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">Integer</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">])</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB">returns</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">(</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">String</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) </span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">}</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> def</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> self</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB">partition_name</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">(</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">root_story_id</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> ids</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> [])</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> root_story_partition</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB"> root_story_partition_name</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">(</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">root_story_id</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) # </span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">this</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> gets</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> us</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> something</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> like</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB"> "</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">event_payloads_0</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span></span>
|
||
<span class="line"><span style="--shiki-light:#A54B7A;--shiki-dark:#F486B8"> return</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> root_story_partition</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> if</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> ids</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">size</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> !=</span><span style="--shiki-light:#A96C14;--shiki-dark:#F5A847"> 1</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payload_partition</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> =</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> PgHashFunc</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB">calculate_partition_index_bigint</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">(</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> value</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">: </span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">ids</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">first</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> num_partitions</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">: </span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">NUM_SECOND_LEVEL_PARTITIONS</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> )</span></span>
|
||
<span class="line"><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> [</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">root_story_partition</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">,</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payload_partition</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">]</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#CB5D94;--shiki-dark:#FDA2CB">join</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">(</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">_</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0">) # </span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">then</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> this</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> gets</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> us</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> to</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> something</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> like</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB"> "</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">event_payloads_0_0</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">"</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> end</span></span></code></pre></div><h2 id="rollout"><a href="#rollout"><span>Rollout</span><svg aria-hidden="true" data-heading-link-icon="true" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path d="M13.5438 10.456C12.7247 9.63723 11.614 9.17728 10.4558 9.17728C9.29766 9.17728 8.18692 9.63723 7.36781 10.456L4.27881 13.544C3.45969 14.3631 2.99951 15.4741 2.99951 16.6325C2.99951 17.7909 3.45969 18.9019 4.27881 19.721C5.09793 20.5401 6.2089 21.0003 7.36731 21.0003C8.52572 21.0003 9.63669 20.5401 10.4558 19.721L11.9998 18.177" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path><path d="M10.4561 13.544C11.2752 14.3628 12.3859 14.8227 13.5441 14.8227C14.7022 14.8227 15.8129 14.3628 16.6321 13.544L19.7211 10.456C20.5402 9.63687 21.0004 8.52591 21.0004 7.36749C21.0004 6.20908 20.5402 5.09811 19.7211 4.27899C18.9019 3.45987 17.791 2.99969 16.6326 2.99969C15.4741 2.99969 14.3632 3.45987 13.5441 4.27899L12.0001 5.82299" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></a></h2><p>The phases of rollout for this project, all controlled by different feature flags, were:</p><ol><li><p>Dual writes: writing to both the new table and the old table at the same time</p></li><li><p>Verification: reading from the new table to verify data consistency between the old table and the new table, while still relying on the old table</p></li><li><p>Reading from the new table primarily, with fall back to the old table when the new table didn’t return any data</p></li></ol><h3 id="dual-writes"><a href="#dual-writes"><span>Dual writes</span><svg aria-hidden="true" data-heading-link-icon="true" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path d="M13.5438 10.456C12.7247 9.63723 11.614 9.17728 10.4558 9.17728C9.29766 9.17728 8.18692 9.63723 7.36781 10.456L4.27881 13.544C3.45969 14.3631 2.99951 15.4741 2.99951 16.6325C2.99951 17.7909 3.45969 18.9019 4.27881 19.721C5.09793 20.5401 6.2089 21.0003 7.36731 21.0003C8.52572 21.0003 9.63669 20.5401 10.4558 19.721L11.9998 18.177" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path><path d="M10.4561 13.544C11.2752 14.3628 12.3859 14.8227 13.5441 14.8227C14.7022 14.8227 15.8129 14.3628 16.6321 13.544L19.7211 10.456C20.5402 9.63687 21.0004 8.52591 21.0004 7.36749C21.0004 6.20908 20.5402 5.09811 19.7211 4.27899C18.9019 3.45987 17.791 2.99969 16.6326 2.99969C15.4741 2.99969 14.3632 3.45987 13.5441 4.27899L12.0001 5.82299" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></a></h3><p>Dual writes was pretty straightforward to roll out. It required flipping on a feature flag and thereby starting to write equivalent records to both the old table and the new table for each event.</p><h3 id="verification"><a href="#verification"><span>Verification</span><svg aria-hidden="true" data-heading-link-icon="true" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path d="M13.5438 10.456C12.7247 9.63723 11.614 9.17728 10.4558 9.17728C9.29766 9.17728 8.18692 9.63723 7.36781 10.456L4.27881 13.544C3.45969 14.3631 2.99951 15.4741 2.99951 16.6325C2.99951 17.7909 3.45969 18.9019 4.27881 19.721C5.09793 20.5401 6.2089 21.0003 7.36731 21.0003C8.52572 21.0003 9.63669 20.5401 10.4558 19.721L11.9998 18.177" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path><path d="M10.4561 13.544C11.2752 14.3628 12.3859 14.8227 13.5441 14.8227C14.7022 14.8227 15.8129 14.3628 16.6321 13.544L19.7211 10.456C20.5402 9.63687 21.0004 8.52591 21.0004 7.36749C21.0004 6.20908 20.5402 5.09811 19.7211 4.27899C18.9019 3.45987 17.791 2.99969 16.6326 2.99969C15.4741 2.99969 14.3632 3.45987 13.5441 4.27899L12.0001 5.82299" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></a></h3><p>The dual reads (or shadow reads) phase of the rollout meant that we were also querying the new table everywhere we queried the old table. This was our time to verify that the new table was returning the same data as the old table, and could therefore be trusted as the primary read. In order to compare the data returned from the two tables, we used a Ruby library called <a href="https://github.com/github/scientist">Github scientist</a>. This library is designed as an aid for refactoring critical code paths. With Github scientist, you can set up “experiments” where your application primarily uses the old method, while trying the new method. The library reports whether or not the two methods matched, which was data we could send to our monitoring system, Honeycomb. Github scientist also allows you to log any relevant metadata, which in our case were things like the <code>event_id</code>, the <code>event_payload_id</code>, and the <code>output_payload_id</code>. That way, we could go into Rails console and debug mismatches by looking at the records. For this project, we were concerned with the <code>output</code> field of <code>event_payload</code> records matching the <code>output</code> field of their corresponding <code>output_payload</code> record for any given event. The <code>output</code> field contains the arbitrary JSON that forms the core content of an event, so we needed to be sure we were getting the right data.</p><p>For the most part, the mismatches that we saw were expected. These were events created before we turned on dual writes, which wouldn't have an <code>event_payload</code> (i.e., the <code>event_payload_id</code> field was null). There were some unexpected mismatches on new event data, however, which required a closer look at those events and the way that they were created.</p><p>Once we were seeing near 100% match rate between <code>output_payloads</code> and <code>event_payloads</code>, with the only remaining mismatches being explained by events that were created before dual writes were enabled, we were ready to start reading from the new table primarily.</p><h3 id="reading-from-new-table-primarily-with-fallback-to-old-table"><a href="#reading-from-new-table-primarily-with-fallback-to-old-table"><span>Reading from new table primarily, with fallback to old table</span><svg aria-hidden="true" data-heading-link-icon="true" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path d="M13.5438 10.456C12.7247 9.63723 11.614 9.17728 10.4558 9.17728C9.29766 9.17728 8.18692 9.63723 7.36781 10.456L4.27881 13.544C3.45969 14.3631 2.99951 15.4741 2.99951 16.6325C2.99951 17.7909 3.45969 18.9019 4.27881 19.721C5.09793 20.5401 6.2089 21.0003 7.36731 21.0003C8.52572 21.0003 9.63669 20.5401 10.4558 19.721L11.9998 18.177" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path><path d="M10.4561 13.544C11.2752 14.3628 12.3859 14.8227 13.5441 14.8227C14.7022 14.8227 15.8129 14.3628 16.6321 13.544L19.7211 10.456C20.5402 9.63687 21.0004 8.52591 21.0004 7.36749C21.0004 6.20908 20.5402 5.09811 19.7211 4.27899C18.9019 3.45987 17.791 2.99969 16.6326 2.99969C15.4741 2.99969 14.3632 3.45987 13.5441 4.27899L12.0001 5.82299" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></a></h3><p>Here is an example of this phase of the rollout:</p><div><pre class="shiki shiki-themes tines-light tines-dark" style="--shiki-light:#2e2d36;--shiki-dark:#f8f4f0;--shiki-light-bg:#00000000;--shiki-dark-bg:#00000000" tabindex="0"><code><span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> def</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> get_action_output</span></span>
|
||
<span class="line"><span style="--shiki-light:#A54B7A;--shiki-dark:#F486B8"> if</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> read_from_event_payloads_with_fallback_enabled</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">?</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payload</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">&</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">output</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">presence</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D"> ||</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> output_payload</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">&</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">output</span><span style="--shiki-light:#2E2D36;--shiki-dark:#F8F4F0"> # </span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">try</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> output_payload</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> if</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> event_payload</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> is</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> nil</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> or</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> its</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> output</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> is</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> empty</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB"> {}</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> else</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> output_payload</span><span style="--shiki-light:#B74D1A;--shiki-dark:#FD975D">&</span><span style="--shiki-light:#6E6D76;--shiki-dark:#CFCDCB">.</span><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89">output</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> end</span></span>
|
||
<span class="line"><span style="--shiki-light:#1F7A57;--shiki-dark:#5ABE89"> end</span></span></code></pre></div><p>We had instrumentation so that we could look at events that required us to use the old table. In these cases, we would confirm that the event was created before dual writes were enabled, and therefore didn’t have an associated <code>event_payload</code>. Once we were reading from the new table primarily everywhere, this project could be considered “done”.</p><h2 id="takeaways"><a href="#takeaways"><span>Takeaways</span><svg aria-hidden="true" data-heading-link-icon="true" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path d="M13.5438 10.456C12.7247 9.63723 11.614 9.17728 10.4558 9.17728C9.29766 9.17728 8.18692 9.63723 7.36781 10.456L4.27881 13.544C3.45969 14.3631 2.99951 15.4741 2.99951 16.6325C2.99951 17.7909 3.45969 18.9019 4.27881 19.721C5.09793 20.5401 6.2089 21.0003 7.36731 21.0003C8.52572 21.0003 9.63669 20.5401 10.4558 19.721L11.9998 18.177" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path><path d="M10.4561 13.544C11.2752 14.3628 12.3859 14.8227 13.5441 14.8227C14.7022 14.8227 15.8129 14.3628 16.6321 13.544L19.7211 10.456C20.5402 9.63687 21.0004 8.52591 21.0004 7.36749C21.0004 6.20908 20.5402 5.09811 19.7211 4.27899C18.9019 3.45987 17.791 2.99969 16.6326 2.99969C15.4741 2.99969 14.3632 3.45987 13.5441 4.27899L12.0001 5.82299" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></a></h2><p>While partitioning seemed like a clear, relatively straightforward solution to our problem of a relentlessly growing <code>output_payloads</code> table, it was challenging to find a partitioning strategy that guaranteed no regression in performance at scale. We learned about PostgreSQL’s behavior and idiosyncrasies, particularly those related to partitioning, while refining our approach to systematic problem solving through iterative experimentation, testing, and measuring. Although we solved many problems to have an effective partitioning solution, we are constantly iterating to optimize this code path that works with large/arbitrary JSON data at scale. Watch this space, as we already have something brewing…</p></article></div></div><div style="display:block;width:var(--sectionPadding);height:var(--sectionPadding);flex:0 0 var(--sectionPadding);user-select:none"></div></div><!--$--><!--/$--><section class="WildCodeCTASection-module-scss-module__eN7prW__section"><div class="InteractiveCursor-module-scss-module__DEDOvG__region WildCodeCTASection-module-scss-module__eN7prW__wordmark"><div class="WildCodeField-module-scss-module__N5x1Gq__wordmark" role="img" aria-label="Start today"></div></div><div class="WildCodeCTASection-module-scss-module__eN7prW__text"><p class="WildCodeCTASection-module-scss-module__eN7prW__tagline">Sign up today to get started or schedule time with our team to learn more.</p><div class="CtaButtons-module-scss-module__okO8Ua__actions"><a href="https://login.tines.com/saml_idp/signup"><span class="Button-module-scss-module__KA9GbG__buttonWrapper Button-module-scss-module__KA9GbG__fullWidth" style="width:100%"><span class="Button-module-scss-module__KA9GbG__buttonInner Button-module-scss-module__KA9GbG__filled Button-module-scss-module__KA9GbG__mono" style="--buttonColor:var(--pageForegroundColor);--buttonTextColor:var(--pageBg, var(--lightest))"><span class="Button-module-scss-module__KA9GbG__buttonText">Sign up free</span></span></span></a><a href="/book-a-demo/"><span class="Button-module-scss-module__KA9GbG__buttonWrapper Button-module-scss-module__KA9GbG__fullWidth CtaButtons-module-scss-module__okO8Ua__secondary" style="width:100%"><span class="Button-module-scss-module__KA9GbG__buttonInner Button-module-scss-module__KA9GbG__outlined Button-module-scss-module__KA9GbG__mono" style="--buttonColor:var(--pageForegroundColor);--buttonTextColor:var(--pageBg, var(--lightest))"><span class="Button-module-scss-module__KA9GbG__buttonText">Book a demo</span></span></span></a></div></div></section></div></main><footer id="site-footer" class="SiteFooter26-module-scss-module__LzK7FG__footer"><div class="SiteFooter26-module-scss-module__LzK7FG__sections"><div class="SiteFooter26-module-scss-module__LzK7FG__section"><button type="button" class="SiteFooter26-module-scss-module__LzK7FG__sectionToggle" aria-expanded="false"><span class="SiteFooter26-module-scss-module__LzK7FG__sectionTitle">Product</span><svg width="10" height="7" viewBox="0 0 10 7" fill="none" class="SiteFooter26-module-scss-module__LzK7FG__chevron"><path d="M1.04785 1L5.04785 5L9.04785 1" stroke="currentColor" stroke-width="1.5"></path></svg></button><div class="SiteFooter26-module-scss-module__LzK7FG__sectionContent"><div class="SiteFooter26-module-scss-module__LzK7FG__sectionContentInner"><div class="SiteFooter26-module-scss-module__LzK7FG__group"><a class="SiteFooter26-module-scss-module__LzK7FG__groupTitleLink" href="/3b/">Tines 3B</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="/3b/examples/">Examples gallery</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="/3b/product-updates/">Product updates</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="https://docs.3b.tines.com/" target="_blank" rel="noopener noreferrer">Docs<span class="SiteFooter26-module-scss-module__LzK7FG__externalMark" aria-hidden="true">↗</span></a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="https://status.tines.com/" target="_blank" rel="noopener noreferrer">Status<span class="SiteFooter26-module-scss-module__LzK7FG__externalMark" aria-hidden="true">↗</span></a></div><div class="SiteFooter26-module-scss-module__LzK7FG__group"><a class="SiteFooter26-module-scss-module__LzK7FG__groupTitleLink" href="/stories/">Tines Stories</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="/stories/storyboard/">Storyboard</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="/stories/cases/">Cases</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="/stories/workbench/">Workbench</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="/stories/agents/">Agents</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="/stories/monitoring/">Monitoring</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="/workflow-capability-matrix/">Workflow capability matrix</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="/stories/templates/">Templates</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="/library/">Library</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="/stories/five-minute-flows/">Five-minute flows</a><a href="/university/" class="SiteFooter26-module-scss-module__LzK7FG__leaf">University</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="/stories/whats-new/">What’s new</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="/stories/docs/">Docs and API</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="https://status.tines.com/" target="_blank" rel="noopener noreferrer">Status<span class="SiteFooter26-module-scss-module__LzK7FG__externalMark" aria-hidden="true">↗</span></a></div><div class="SiteFooter26-module-scss-module__LzK7FG__group"><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="/pricing/">Pricing</a></div></div></div></div><div class="SiteFooter26-module-scss-module__LzK7FG__section"><button type="button" class="SiteFooter26-module-scss-module__LzK7FG__sectionToggle" aria-expanded="false"><span class="SiteFooter26-module-scss-module__LzK7FG__sectionTitle">Solutions</span><svg width="10" height="7" viewBox="0 0 10 7" fill="none" class="SiteFooter26-module-scss-module__LzK7FG__chevron"><path d="M1.04785 1L5.04785 5L9.04785 1" stroke="currentColor" stroke-width="1.5"></path></svg></button><div class="SiteFooter26-module-scss-module__LzK7FG__sectionContent"><div class="SiteFooter26-module-scss-module__LzK7FG__sectionContentInner"><div class="SiteFooter26-module-scss-module__LzK7FG__group"><a class="SiteFooter26-module-scss-module__LzK7FG__groupTitleLink" href="/solutions/it/">IT</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="/solutions/it/it-as-a-business-enabler/">IT as a business enabler </a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="/solutions/it/infrastructure-management/">Infrastructure management</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="/solutions/it/networking/">Networking</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="/solutions/it/application-management/">Application management</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="/solutions/it/it-service-delivery-and-support/">IT service delivery and support</a></div><div class="SiteFooter26-module-scss-module__LzK7FG__group"><a class="SiteFooter26-module-scss-module__LzK7FG__groupTitleLink" href="/solutions/security/">Security</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="/solutions/security/ai-soc/">AI SOC</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="/solutions/security/soar/">SOAR</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="/solutions/security/governance-risk-and-compliance/">GRC</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="/solutions/security/threat-intelligence/">Threat intelligence</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="/solutions/security/vulnerability-management/">Vulnerability management</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="/solutions/security/network-security/">Network security</a></div><div class="SiteFooter26-module-scss-module__LzK7FG__group"><a class="SiteFooter26-module-scss-module__LzK7FG__leaf SiteFooter26-module-scss-module__LzK7FG__leafBold" href="/public-sector/">Public sector</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf SiteFooter26-module-scss-module__LzK7FG__leafBold" href="/financial-services/">Financial services</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf SiteFooter26-module-scss-module__LzK7FG__leafBold" href="/mssps/">MSSPs</a></div><div class="SiteFooter26-module-scss-module__LzK7FG__group"><a href="/professional-services/" class="SiteFooter26-module-scss-module__LzK7FG__leaf">Professional services</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="/ai-in-tines/">AI in Tines</a><a href="/enterprise/" class="SiteFooter26-module-scss-module__LzK7FG__leaf">Enterprise</a></div></div></div></div><div class="SiteFooter26-module-scss-module__LzK7FG__section"><button type="button" class="SiteFooter26-module-scss-module__LzK7FG__sectionToggle" aria-expanded="false"><span class="SiteFooter26-module-scss-module__LzK7FG__sectionTitle">Discover</span><svg width="10" height="7" viewBox="0 0 10 7" fill="none" class="SiteFooter26-module-scss-module__LzK7FG__chevron"><path d="M1.04785 1L5.04785 5L9.04785 1" stroke="currentColor" stroke-width="1.5"></path></svg></button><div class="SiteFooter26-module-scss-module__LzK7FG__sectionContent"><div class="SiteFooter26-module-scss-module__LzK7FG__sectionContentInner"><div class="SiteFooter26-module-scss-module__LzK7FG__group"><a class="SiteFooter26-module-scss-module__LzK7FG__groupTitleLink" href="/customers/">Customers</a></div><div class="SiteFooter26-module-scss-module__LzK7FG__group"><a class="SiteFooter26-module-scss-module__LzK7FG__groupTitleLink" href="/blog/">Blog</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="/blog/series/">Series</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="/blog/guides/">Guides</a><a href="/podcast/" class="SiteFooter26-module-scss-module__LzK7FG__leaf">Podcast</a></div><div class="SiteFooter26-module-scss-module__LzK7FG__group"><a class="SiteFooter26-module-scss-module__LzK7FG__groupTitleLink" href="/events/">Events</a><a href="/webinars/" class="SiteFooter26-module-scss-module__LzK7FG__leaf">Webinars</a><a href="/bootcamps/" class="SiteFooter26-module-scss-module__LzK7FG__leaf">Bootcamps</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="/events/builder-connect/">Builder Connect</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="https://www.workflow.live/" target="_blank" rel="noopener noreferrer">Workflow.live<span class="SiteFooter26-module-scss-module__LzK7FG__externalMark" aria-hidden="true">↗</span></a></div><div class="SiteFooter26-module-scss-module__LzK7FG__group"><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="https://community.tines.com/" target="_blank" rel="noopener noreferrer">Community<span class="SiteFooter26-module-scss-module__LzK7FG__externalMark" aria-hidden="true">↗</span></a><a href="/you-did-what-with-tines/" class="SiteFooter26-module-scss-module__LzK7FG__leaf">YDWWT</a></div><div class="SiteFooter26-module-scss-module__LzK7FG__group"><a href="/customer-center/" class="SiteFooter26-module-scss-module__LzK7FG__leaf">Customer center</a></div></div></div></div><div class="SiteFooter26-module-scss-module__LzK7FG__stackedColumn"><div class="SiteFooter26-module-scss-module__LzK7FG__section"><button type="button" class="SiteFooter26-module-scss-module__LzK7FG__sectionToggle" aria-expanded="false"><span class="SiteFooter26-module-scss-module__LzK7FG__sectionTitle">Company</span><svg width="10" height="7" viewBox="0 0 10 7" fill="none" class="SiteFooter26-module-scss-module__LzK7FG__chevron"><path d="M1.04785 1L5.04785 5L9.04785 1" stroke="currentColor" stroke-width="1.5"></path></svg></button><div class="SiteFooter26-module-scss-module__LzK7FG__sectionContent"><div class="SiteFooter26-module-scss-module__LzK7FG__sectionContentInner"><div class="SiteFooter26-module-scss-module__LzK7FG__group"><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="/about/">About us</a><a href="/careers/" class="SiteFooter26-module-scss-module__LzK7FG__leaf">Careers</a><a href="/newsroom/" class="SiteFooter26-module-scss-module__LzK7FG__leaf">Newsroom</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="/partners/">Partners</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="/contact/">Contact</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="https://store.tines.com/" target="_blank" rel="noopener noreferrer">Store<span class="SiteFooter26-module-scss-module__LzK7FG__externalMark" aria-hidden="true">↗</span></a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="https://live.standards.site/tines" target="_blank" rel="noopener noreferrer">Brand assets<span class="SiteFooter26-module-scss-module__LzK7FG__externalMark" aria-hidden="true">↗</span></a></div><div class="SiteFooter26-module-scss-module__LzK7FG__group"><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="https://www.linkedin.com/company/tines-io/" target="_blank" rel="noopener noreferrer">LinkedIn<span class="SiteFooter26-module-scss-module__LzK7FG__externalMark" aria-hidden="true">↗</span></a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="https://twitter.com/tines_hq" target="_blank" rel="noopener noreferrer">X<span class="SiteFooter26-module-scss-module__LzK7FG__externalMark" aria-hidden="true">↗</span></a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="https://www.youtube.com/@TinesHQ" target="_blank" rel="noopener noreferrer">YouTube<span class="SiteFooter26-module-scss-module__LzK7FG__externalMark" aria-hidden="true">↗</span></a></div></div></div></div><div class="SiteFooter26-module-scss-module__LzK7FG__section"><button type="button" class="SiteFooter26-module-scss-module__LzK7FG__sectionToggle" aria-expanded="false"><span class="SiteFooter26-module-scss-module__LzK7FG__sectionTitle">Trust and security</span><svg width="10" height="7" viewBox="0 0 10 7" fill="none" class="SiteFooter26-module-scss-module__LzK7FG__chevron"><path d="M1.04785 1L5.04785 5L9.04785 1" stroke="currentColor" stroke-width="1.5"></path></svg></button><div class="SiteFooter26-module-scss-module__LzK7FG__sectionContent"><div class="SiteFooter26-module-scss-module__LzK7FG__sectionContentInner"><div class="SiteFooter26-module-scss-module__LzK7FG__group"><a href="/security/" class="SiteFooter26-module-scss-module__LzK7FG__groupTitleLink">Security</a><a href="/tines-security-best-practices/" class="SiteFooter26-module-scss-module__LzK7FG__leaf">Security best practices</a><a class="SiteFooter26-module-scss-module__LzK7FG__leaf" href="https://trust.tines.com/" target="_blank" rel="noopener noreferrer">Trust center<span class="SiteFooter26-module-scss-module__LzK7FG__externalMark" aria-hidden="true">↗</span></a></div><div class="SiteFooter26-module-scss-module__LzK7FG__group"><a href="/legal/" class="SiteFooter26-module-scss-module__LzK7FG__groupTitleLink">Legal</a><a href="/privacy/" class="SiteFooter26-module-scss-module__LzK7FG__leaf">Privacy</a><a href="/terms/" class="SiteFooter26-module-scss-module__LzK7FG__leaf">Terms</a><a href="/dpa/" class="SiteFooter26-module-scss-module__LzK7FG__leaf">DPA</a><a href="/cookies-policy/" class="SiteFooter26-module-scss-module__LzK7FG__leaf">Cookies policy</a></div></div></div></div></div></div><div class="SiteFooter26-module-scss-module__LzK7FG__bottomBar"><span>© Tines</span><a class="SiteFooter26-module-scss-module__LzK7FG__bottomLogo" title="Tines" href="/"><svg class="tines-logo-icon " width="28" height="28" viewBox="0 0 48 48" fill="currentColor"><path fill-rule="evenodd" clip-rule="evenodd" d="M17.6641 0C11.9485 0 6.89478 3.68623 5.18424 9.10302L0.47998 24L5.18424 38.897C6.89479 44.3138 11.9485 48 17.6641 48H30.3358C36.0515 48 41.1052 44.3138 42.8157 38.897L47.52 24L42.8157 9.10302C41.1052 3.68623 36.0515 0 30.3358 0H17.6641ZM30.336 3.74451C34.4042 3.74451 38.0012 6.36822 39.2187 10.2237L40.372 13.8759C38.0518 11.9723 35.1137 10.9008 32.0429 10.9006L15.9228 10.9002C12.8726 10.9004 9.9534 11.9575 7.64056 13.8372L8.78167 10.2237C9.99917 6.36822 13.5962 3.74451 17.6643 3.74451H30.336ZM8.51076 18.2979L5.58159 22.1278L42.3838 22.1278L39.4549 18.2983C37.6948 15.9969 34.9524 14.6453 32.0426 14.6451H15.835C12.958 14.6723 10.2531 16.0197 8.51076 18.2979ZM42.3778 25.8723L39.4547 29.6983C37.6944 32.0023 34.9501 33.3555 32.0381 33.3553L15.9271 33.3548C13.0152 33.3551 10.2708 32.0019 8.51056 29.6979L5.58776 25.8723L42.3778 25.8723ZM8.78145 37.7763C9.99894 41.6318 13.5959 44.2555 17.6641 44.2555H30.3358C34.404 44.2555 38.001 41.6318 39.2185 37.7763L40.3726 34.1214C38.0514 36.0273 35.111 37.1 32.0378 37.0998L15.9274 37.0994C12.8747 37.0996 9.9531 36.0412 7.63915 34.159L8.78145 37.7763Z"></path></svg></a><button class="SiteFooter26-module-scss-module__LzK7FG__cookieSettings">Cookie settings</button></div></footer></div><script src="/_next/static/immutable/chunks/2iox-02sx9loa.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n4:I[11926,[\"/_next/static/immutable/chunks/3sz971vfk095f.js\",\"/_next/static/immutable/chunks/0czgivygkxa1z.js\",\"/_next/static/immutable/chunks/2kpu_ktjkwf7q.js\",\"/_next/static/immutable/chunks/07hv-f84dhd61.js\",\"/_next/static/immutable/chunks/0639nwpv6l0pm.js\",\"/_next/static/immutable/chunks/2826pm12av2bw.js\",\"/_next/static/immutable/chunks/2_swgt_1o6v9a.js\"],\"default\"]\n5:I[550880,[\"/_next/static/immutable/chunks/3sz971vfk095f.js\",\"/_next/static/immutable/chunks/0czgivygkxa1z.js\",\"/_next/static/immutable/chunks/2kpu_ktjkwf7q.js\",\"/_next/static/immutable/chunks/07hv-f84dhd61.js\",\"/_next/static/immutable/chunks/0639nwpv6l0pm.js\",\"/_next/static/immutable/chunks/2826pm12av2bw.js\",\"/_next/static/immutable/chunks/2_swgt_1o6v9a.js\"],\"default\"]\n7:I[311235,[\"/_next/static/immutable/chunks/3sz971vfk095f.js\",\"/_next/static/immutable/chunks/0czgivygkxa1z.js\",\"/_next/static/immutable/chunks/2kpu_ktjkwf7q.js\",\"/_next/static/immutable/chunks/07hv-f84dhd61.js\",\"/_next/static/immutable/chunks/0639nwpv6l0pm.js\",\"/_next/static/immutable/chunks/2826pm12av2bw.js\",\"/_next/static/immutable/chunks/2_swgt_1o6v9a.js\"],\"OutletBoundary\"]\n8:\"$Sreact.suspense\"\nb:I[311235,[\"/_next/static/immutable/chunks/3sz971vfk095f.js\",\"/_next/static/immutable/chunks/0czgivygkxa1z.js\",\"/_next/static/immutable/chunks/2kpu_ktjkwf7q.js\",\"/_next/static/immutable/chunks/07hv-f84dhd61.js\",\"/_next/static/immutable/chunks/0639nwpv6l0pm.js\",\"/_next/static/immutable/chunks/2826pm12av2bw.js\",\"/_next/static/immutable/chunks/2_swgt_1o6v9a.js\"],\"ViewportBoundary\"]\nd:I[311235,[\"/_next/static/immutable/chunks/3sz971vfk095f.js\",\"/_next/static/immutable/chunks/0czgivygkxa1z.js\",\"/_next/static/immutable/chunks/2kpu_ktjkwf7q.js\",\"/_next/static/immutable/chunks/07hv-f84dhd61.js\",\"/_next/static/immutable/chunks/0639nwpv6l0pm.js\",\"/_next/static/immutable/chunks/2826pm12av2bw.js\",\"/_next/static/immutable/chunks/2_swgt_1o6v9a.js\"],\"MetadataBoundary\"]\nf:I[940405,[\"/_next/static/immutable/chunks/3sz971vfk095f.js\",\"/_next/static/immutable/chunks/0czgivygkxa1z.js\",\"/_next/static/immutable/chunks/2kpu_ktjkwf7q.js\",\"/_next/static/immutable/chunks/07hv-f84dhd61.js\",\"/_next/static/immutable/chunks/0639nwpv6l0pm.js\",\"/_next/static/immutable/chunks/2826pm12av2bw.js\",\"/_next/static/immutable/chunks/2_swgt_1o6v9a.js\"],\"default\",1]\n:HL[\"/_next/static/immutable/chunks/132trk_zc3ylu.css\",\"style\"]\n:HL[\"/_next/static/immutable/chunks/1bmd2ryn1r-hv.css\",\"style\"]\n:HL[\"/_next/static/immutable/chunks/3qp9-r2fgklws.css\",\"style\"]\n:HL[\"/_next/static/immutable/chunks/43xkgk33-6316.css\",\"style\"]\n:HL[\"/_next/static/immutable/chunks/3w0wy298bmb96.css\",\"style\"]\n:HL[\"/_next/static/immutable/chunks/27k1lbkm9ytw4.css\",\"style\"]\n:HL[\"/_next/static/immutable/chunks/45auz_6fncqnw.css\",\"style\"]\n:HL[\"/_next/static/immutable/chunks/3a0f_y332k2v1.css\",\"style\"]\na:X\n0:{\"P\":null,\"c\":[\"\",\"blog\",\"futureproofing-tines-partitioning-a-17tb-table-in-postgresql\",\"\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"blog\",{\"children\":[[\"segments\",\"futureproofing-tines-partitioning-a-17tb-table-in-postgresql\",\"c\",[\"guides\",\"series\"]],{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4096]},\"$undefined\",\"$undefined\",4096]},\"$undefined\",\"$undefined\",4096]},\"$undefined\",\"$undefined\",4112],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/immutable/chunks/132trk_zc3ylu.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/immutable/chunks/1bmd2ryn1r-hv.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"2\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/immutable/chunks/3qp9-r2fgklws.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"3\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/immutable/chunks/43xkgk33-6316.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"4\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/immutable/chunks/3w0wy298bmb96.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/immutable/chunks/3sz971vfk095f.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/immutable/chunks/0czgivygkxa1z.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/immutable/chunks/2kpu_ktjkwf7q.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/_next/static/immutable/chunks/07hv-f84dhd61.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-4\",{\"src\":\"/_next/static/immutable/chunks/0639nwpv6l0pm.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-5\",{\"src\":\"/_next/static/immutable/chunks/2826pm12av2bw.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-6\",{\"src\":\"/_next/static/immutable/chunks/2_swgt_1o6v9a.js\",\"async\":true,\"nonce\":\"$undefined\"}]],\"$L2\"]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/immutable/chunks/27k1lbkm9ytw4.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/immutable/chunks/45auz_6fncqnw.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/immutable/chunks/3pjhofejz57jt.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/immutable/chunks/1q-89ajkqbbkw.js\",\"async\":true,\"nonce\":\"$undefined\"}]],\"$L3\"]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[\"$L6\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/immutable/chunks/3a0f_y332k2v1.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/immutable/chunks/2uho2m59t6w8f.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/immutable/chunks/2ti9pdu9p4n5l.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/immutable/chunks/31qqpjo4d7384.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/_next/static/immutable/chunks/3zb6qebqmln4d.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@9\"}]}]]}],{},null,false,null]},null,false,\"$a\"]},null,false,null]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Le\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$f\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/immutable/chunks/132trk_zc3ylu.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/immutable/chunks/1bmd2ryn1r-hv.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"2\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/immutable/chunks/3qp9-r2fgklws.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"3\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/immutable/chunks/43xkgk33-6316.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"4\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/immutable/chunks/3w0wy298bmb96.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":false,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\"}\na:C\nc:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n10:I[62200,[\"/_next/static/immutable/chunks/3sz971vfk095f.js\",\"/_next/static/immutable/chunks/0czgivygkxa1z.js\",\"/_next/static/immutable/chunks/2kpu_ktjkwf7q.js\",\"/_next/static/immutable/chunks/07hv-f84dhd61.js\",\"/_next/static/immutable/chunks/0639nwpv6l0pm.js\",\"/_next/static/immutable/chunks/2826pm12av2bw.js\",\"/_next/static/immutable/chunks/2_swgt_1o6v9a.js\",\"/_next/static/immutable/chunks/3pjhofejz57jt.js\",\"/_next/static/immutable/chunks/1q-89ajkqbbkw.js\",\"/_next/static/immutable/chunks/2uho2m59t6w8f.js\",\"/_next/static/immutable/chunks/2ti9pdu9p4n5l.js\",\"/_next/static/immutable/chunks/31qqpjo4d7384.js\",\"/_next/static/immutable/chunks/3zb6qebqmln4d.js\"],\"AreaNavActiveProvider\"]\n11:I[380637,[\"/_next/static/immutable/chunks/3sz971vfk095f.js\",\"/_next/static/immutable/chunks/0czgivygkxa1z.js\",\"/_next/static/immutable/chunks/2kpu_ktjkwf7q.js\",\"/_next/static/immutable/chunks/07hv-f84dhd61.js\",\"/_next/static/immutable/chunks/0639nwpv6l0pm.js\",\"/_next/static/immutable/chunks/2826pm12av2bw.js\",\"/_next/static/immutable/chunks/2_swgt_1o6v9a.js\",\"/_next/static/immutable/chunks/3pjhofejz57jt.js\",\"/_next/static/immutable/chunks/1q-89ajkqbbkw.js\"],\"AreaNav\"]\n12:I[323752,[\"/_next/static/immutable/chunks/3sz971vfk095f.js\",\"/_next/static/immutable/chunks/0czgivygkxa1z.js\",\"/_next/static/immutable/chunks/2kpu_ktjkwf7q.js\",\"/_next/static/immutable/chunks/07hv-f84dhd61.js\",\"/_next/static/immutable/chunks/0639nwpv6l0pm.js\",\"/_next/static/immutable/chunks/2826pm12av2bw.js\",\"/_next/static/immutable/chunks/2_swgt_1o6v9a.js\",\"/_next/static/immutable/chunks/3pjhofejz57jt.js\",\"/_next/static/immutable/chunks/1q-89ajkqbbkw.js\"],\"WildCodeCTASection\"]\n:HL[\"/fonts/Roobert-Regular.woff2\",\"font\",{\"crossOrigin\":\"anonymous\",\"type\":\"font/woff2\"}]\n:HL[\"/fonts/Reckless-Light.woff2\",\"font\",{\"crossOrigin\":\"anonymous\",\"type\":\"font/woff2\"}]\n:HL[\"/fonts/Reckless-Regular.woff2\",\"font\",{\"crossOrigin\":\"anonymous\",\"type\":\"font/woff2\"}]\n3:[\"$\",\"div\",null,{\"children\":[null,[\"$\",\"$L10\",null,{\"children\":[[\"$\",\"$L11\",null,{\"nav\":{\"id\":\"blog\",\"prefix\":\"/blog\",\"pill\":{\"label\":\"Blog\",\"href\":\"/blog\"},\"sections\":[{\"label\":\"Home\",\"href\":\"/blog\"},{\"label\":\"Categories\",\"flattenWhenWide\":true,\"links\":[{\"label\":\"News\",\"href\":\"/blog/news\"},{\"label\":\"Tutorials\",\"href\":\"/blog/tutorials\"},{\"label\":\"Engineering\",\"href\":\"/blog/engineering\"},{\"label\":\"Product updates\",\"href\":\"/blog/product-updates\"},{\"label\":\"Inside Tines\",\"href\":\"/blog/inside-tines\"},{\"label\":\"Tines × Tines\",\"href\":\"/blog/tines-by-tines\"}]},{\"label\":\"Guides\",\"href\":\"/blog/guides\"},{\"label\":\"All articles\",\"href\":\"/blog/articles\"}]}}],[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}],[\"$\",\"$L12\",null,{}]]}]]}]\n13:T699,(function(){var d=document.documentElement,p=location.pathname,R=[\"/stories/docs\",\"/stories/whats-new\",\"/workflow-capability-matrix\",\"/3b/examples\",\"/3b/product-updates\",\"/library\",\"/stories/five-minute-flows\"],F=[\"/stories/five-minute-flows\"],M=[\"/workflow-capability-matrix\"];function tc(c){var m=document.querySelector('meta[name=\"theme-color\"]');if(m)m.setAttribute(\"content\",c)}function on(L){return L.some(function(r){return p===r||p.indexOf(r+\"/\")===0})}var ok=on(R);if(!ok){d.removeAttribute(\"data-dark-mode-supported\");d.removeAttribute(\"data-page-theme\");d.setAttribute(\"data-color-scheme\",\"light\");d.setAttribute(\"data-resolved-scheme\",\"light\");tc(\"#fcf9f5\");if(on([\"/campaigns\"])){d.setAttribute(\"data-campaign-nav\",\"\")}return}d.setAttribute(\"data-dark-mode-supported\",\"\");if(on(F)){d.setAttribute(\"data-color-scheme\",\"dark\");d.setAttribute(\"data-resolved-scheme\",\"dark\");tc(\"#16131e\");return}var pt=document.cookie.match(/page-theme=(\\w+)/);var mq=/[?\u0026]matrix=on/.test(location.search);if(on(M)\u0026\u0026((pt\u0026\u0026pt[1]===\"matrix\")||mq)){d.setAttribute(\"data-page-theme\",\"matrix\");d.setAttribute(\"data-color-scheme\",\"dark\");d.setAttribute(\"data-resolved-scheme\",\"dark\");tc(\"#0b1a17\");return}else{d.removeAttribute(\"data-page-theme\")}var cm=document.cookie.match(/preferred-color-scheme=(\\w+)/);var s;if(cm){s=cm[1]}else{var sv=d.getAttribute(\"data-color-scheme\");s=sv\u0026\u0026sv!==\"light\"?sv:\"auto\"}var r=s===\"dark\"?\"dark\":s===\"light\"?\"light\":window.matchMedia(\"(prefers-color-scheme:dark)\").matches?\"dark\":\"light\";d.setAttribute(\"data-color-scheme\",s);d.setAttribute(\"data-resolved-scheme\",r);tc(r===\"dark\"?\"#16131e\":\"#fcf9f5\");if(on([\"/campaigns\"])){d.setAttribute(\"data-campaign-nav\",\"\")}})()14:T53a,{\"@context\":\"https://schema.org\",\"@type\":\"Organization\",\"name\":\"Tines\",\"url\":\"https://www.tines.com/\",\"@id\":\"https://www.tines.com/#org\",\"description\":\"Tines 3B enables every team to build AI agents, apps, and automation in one safe, secure environment — with the control Security and IT need to govern it at scale.\",\"foundingDate\":\"2018\",\"founders\":[{\"@type\":\"Person\",\"name\":\"Eoin Hinchy\"},{\"@type\":\"Person\",\"name\":\"Thomas Kinsella\"}],\"sameAs\":[\"https://www.linkedin.com/company/tines-io/\",\"https://twitter.com/tines_hq\",\"https://www.youtube.com/@TinesHQ\",\"https://github.com/tines\"],\"contactPoint\":[{\"@type\":\"ContactPoint\",\"contactType\":\"customer support\",\"email\":\"hello@tines.com\",\"availableLanguage\":[\"en\"]},{\"@type\":\"ContactPoint\",\"contactType\":\"analyst relations\",\"email\":\"analysts@tines.com\",\"availableLanguage\":[\"en\"]},{\"@type\":\"ContactPoint\",\"contactType\":\"media relations\",\"email\":\"pr@tines.com\",\"availableLanguage\":[\"en\"]}],\"address\":[{\"@type\":\"PostalAddress\",\"streetAddress\":\"10 Westland Square, Pearse Street\",\"addressLocality\":\"Dublin\",\"postalCode\":\"D02 CX36\",\"addressCountry\":\"IE\",\"name\":\"Tines Limited\"},{\"@type\":\"PostalAddress\",\"streetAddress\":\"99 High Street, 14th Floor\",\"addressLocality\":\"Boston\",\"addressRegion\":\"MA\",\"postalCode\":\"02111\",\"addressCountry\":\"US\",\"name\":\"Tines Technology Inc.\"}],\"areaServed\":\"Global\"}2:[\"$\",\"html\",null,{\"lang\":\"en-US\",\"data-color-scheme\":\"light\",\"data-resolved-scheme\":\"light\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"script\",null,{\"id\":\"color-scheme-init\",\"dangerouslySetInnerHTML\":{\"__html\":\"$13\"}}],[\"$\",\"meta\",null,{\"name\":\"theme-color\",\"content\":\"#fcf9f5\"}],[\"$\",\"link\",null,{\"rel\":\"preload\",\"href\":\"/fonts/Roobert-Regular.woff2\",\"as\":\"font\",\"type\":\"font/woff2\",\"crossOrigin\":\"anonymous\"}],[\"$\",\"link\",null,{\"rel\":\"preload\",\"href\":\"/fonts/Reckless-Light.woff2\",\"as\":\"font\",\"type\":\"font/woff2\",\"crossOrigin\":\"anonymous\"}],[\"$\",\"link\",null,{\"rel\":\"preload\",\"href\":\"/fonts/Reckless-Regular.woff2\",\"as\":\"font\",\"type\":\"font/woff2\",\"crossOrigin\":\"anonymous\"}]]}],[\"$\",\"body\",null,{\"children\":[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"$14\"}}],\"$L15\",\"$L16\",\"$L17\"]}]]}]\n18:I[12579,[\"/_next/static/immutable/chunks/3sz971vfk095f.js\",\"/_next/static/immutable/chunks/0czgivygkxa1z.js\",\"/_next/static/immutable/chunks/2kpu_ktjkwf7q.js\",\"/_next/static/immutable/chunks/07hv-f84dhd61.js\",\"/_next/static/immutable/chunks/0639nwpv6l0pm.js\",\"/_next/static/immutable/chunks/2826pm12av2bw.js\",\"/_next/static/immutable/chunks/2_swgt_1o6v9a.js\"],\"default\"]\n19:I[757183,[\"/_next/static/immutable/chunks/3sz971vfk095f.js\",\"/_next/static/immutable/chunks/0czgivygkxa1z.js\",\"/_next/static/immutable/chunks/2kpu_ktjkwf7q.js\",\"/_next/static/immutable/chunks/07hv-f84dhd61.js\",\"/_next/static/immutable/chunks/0639nwpv6l0pm.js\",\"/_next/static/immutable/chunks/2826pm12av2bw.js\",\"/_next/static/immutable/chunks/2_swgt_1o6v9a.js\"],\"AppCookiesProvider\"]\n1a:I[44679,[\"/_next/static/immutable/chunks/3sz971vfk095f.js\",\"/_next/static/immutable/chunks/0czgivygkxa1z.js\",\"/_next/static/immutable/chunks/2kpu_ktjkwf7q.js\",\"/_next/static/immutable/chunks/07hv-f84dhd61.js\",\"/_next/static/immutable/chunks/0639nwpv6l0pm.js\",\"/_next/static/immutable/chunks/2826pm12av2bw.js\",\"/_next/static/immutable/chunks/2_swgt_1o6v9a.js\"],\"CookieConsentInit\"]\n1b:I[209507,[\"/_next/static/immutable/chunks/3sz971vfk095f.js\",\"/_next/static/immutable/chunks/0czgivygkxa1z.js\",\"/_next/static/immutable/chunks/2kpu_ktjkwf7q.js\",\"/_next/static/immutable/chunks/07hv-f84dhd61.js\",\"/_next/static/immutable/chunks/0639nwpv6l0pm.js\",\"/_next/static/immutable/chunks/2826pm12av2bw.js\",\"/_next/static/immutable/chunks/2_swgt_1o6v9a.js\"],\"PageViews\"]\n1c:I[102237,[\"/_next/static/immutable/chunks/3sz971vfk095f.js\",\"/_next/static/immutable/chunks/0czgivygkxa1z.js\",\"/_next/static/immutable/chunks/2kpu_ktjkwf7q.js\",\"/_next/static/immutable/chunks/07hv-f84dhd61.js\",\"/_next/static/immutable/chunks/0639nwpv6l0pm.js\",\"/_next/static/immutable/chunks/2826pm12av2bw.js\",\"/_next/static/immutable/chunks/2_swgt_1o6v9a.js\"],\"PageThemeRouteSync\"]\n1d:I[373871,[\"/_next/static/immutable/chunks/3sz971vfk095f.js\",\"/_next/static/immutable/chunks/0czgivygkxa1z.js\",\"/_next/static/immutable/chunks/2kpu_ktjkwf7q.js\",\"/_next/static/immutable/chunks/07hv-f84dhd61.js\",\"/_next/static/immutable/chunks/0639nwpv6l0pm.js\",\"/_next/static/immutable/chunks/2826pm12av2bw.js\",\"/_next/static/immutable/chunks/2_swgt_1o6v9a.js\"],\"default\"]\n1e:I[871026,[\"/_next/static/immutable/chunks/3sz971vfk095f.js\",\"/_next/static/immutable/chunks/0czgivygkxa1z.js\",\"/_next/static/immutable/chunks/2kpu_ktjkwf7q.js\",\"/_next/static/immutable/chunks/07hv-f84dhd61.js\",\"/_next/static/immutable/chunks/0639nwpv6l0pm.js\",\"/_next/static/immutable/chunks/2826pm12av2bw.js\",\"/_next/static/immutable/chunks/2_swgt_1o6v9a.js\"],\"SiteNav26\"]\n1f:I[414512,[\"/_next/static/immutable/chunks/3sz971vfk095f.js\",\"/_next/static/immutable/chunks/0czgivygkxa1z.js\",\"/_next/static/immutable/chunks/2kpu_ktjkwf7q.js\",\"/_next/static/immutable/chunks/07hv-f84dhd61.js\",\"/_next/static/immutable/chunks/0639nwpv6l0pm.js\",\"/_next/static/immutable/chunks/2826pm12av2bw.js\",\"/_next/static/immutable/chunks/2_swgt_1o6v9a.js\"],\"SiteNavHeightTracker\"]\n20:I[841241,[\"/_next/static/immutable/chunks/3sz971vfk095f.js\",\"/_next/static/immutable/chunks/0czgivygkxa1z.js\",\"/_next/static/immutable/chunks/2kpu_ktjkwf7q.js\",\"/_next/static/immutable/chunks/07hv-f84dhd61.js\",\"/_next/static/immutable/chunks/0639nwpv6l0pm.js\",\"/_next/static/immutable/chunks/2826pm12av2bw.js\",\"/_next/static/immutable/chunks/2_swgt_1o6v9a.js\",\"/_next/static/immutable/chunks/3pjhofejz57jt.js\",\"/_next/static/immutable/chunks/1q-89ajkqbbkw.js\",\"/_next/static/immutable/chunks/2uho2m59t6w8f.js\",\"/_next/static/immutable/chunks/2ti9pdu9p4n5l.js\",\"/_next/static/immutable/chunks/31qqpjo4d7384.js\",\"/_next/static/immutable/chunks/3zb6qebqmln4d.js\"],\"Image\"]\n21:I[980849,[\"/_next/static/immutable/chunks/3sz971vfk095f.js\",\"/_next/static/immutable/chunks/0czgivygkxa1z.js\",\"/_next/static/immutable/chunks/2kpu_ktjkwf7q.js\",\"/_next/static/immutable/chunks/07hv-f84dhd61.js\",\"/_next/static/immutable/chunks/0639nwpv6l0pm.js\",\"/_next/static/immutable/chunks/2826pm12av2bw.js\",\"/_next/static/immutable/chunks/2_swgt_1o6v9a.js\",\"/_next/static/immutable/chunks/3pjhofejz57jt.js\",\"/_next/static/immutable/chunks/1q-89ajkqbbkw.js\",\"/_next/static/immutable/chunks/2uho2m59t6w8f.js\",\"/_next/static/immutable/chunks/2ti9pdu9p4n5l.js\",\"/_next/static/immutable/chunks/31qqpjo4d7384.js\",\"/_next/static/immutable/chunks/3zb6qebqmln4d.js\"],\"default\"]\n23:I[20190,[\"/_next/static/immutable/chunks/3sz971vfk095f.js\",\"/_next/static/immutable/chunks/0czgivygkxa1z.js\",\"/_next/static/immutable/chunks/2kpu_ktjkwf7q.js\",\"/_next/static/immutable/chunks/07hv-f84dhd61.js\",\"/_next/static/immutable/chunks/0639nwpv6l0pm.js\",\"/_next/static/immutable/chunks/2826pm12av2bw.js\",\"/_next/static/immutable/chunks/2_swgt_1o6v9a.js\"],\"DevGridOverlay\"]\n24:I[70011,[\"/_next/static/immutable/chunks/3sz971vfk095f.js\",\"/_next/static/immutable/chunks/0czgivygkxa1z.js\",\"/_next/static/immutable/chunks/2kpu_ktjkwf7q.js\",\"/_next/static/immutable/chunks/07hv-f84dhd61.js\",\"/_next/static/immutable/chunks/0639nwpv6l0pm.js\",\"/_next/static/immutable/chunks/2826pm12av2bw.js\",\"/_next/static/immutable/chunks/2_swgt_1o6v9a.js\"],\"DevPanel\"]\n25:I[535897,[\"/_next/static/immutable/chunks/3sz971vfk095f.js\",\"/_next/static/immutable/chunks/0czgivygkxa1z.js\",\"/_next/static/immutable/chunks/2kpu_ktjkwf7q.js\",\"/_next/static/immutable/chunks/07hv-f84dhd61.js\",\"/_next/static/immutable/chunks/0639nwpv6l0pm.js\",\"/_next/static/immutable/chunks/2826pm12av2bw.js\",\"/_next/static/immutable/chunks/2_swgt_1o6v9a.js\"],\"PreviewModeDevTag\"]\n26:I[868430,[\"/_next/static/immutable/chunks/3sz971vfk095f.js\",\"/_next/static/immutable/chunks/0czgivygkxa1z.js\",\"/_next/static/immutable/chunks/2kpu_ktjkwf7q.js\",\"/_next/static/immutable/chunks/07hv-f84dhd61.js\",\"/_next/static/immutable/chunks/0639nwpv6l0pm.js\",\"/_next/static/immutable/chunks/2826pm12av2bw.js\",\"/_next/static/immutable/chunks/2_swgt_1o6v9a.js\"],\"\"]\n:HL[\"/_next/static/immutable/chunks/3_-011rjao1d9.css\",\"style\"]\n15:[\"$\",\"$L18\",null,{}]\n16:[\"$\",\"$L19\",null,{\"cookies\":{\"emailAddress\":null,\"lastUsedTenantDomain\":\"\"},\"children\":[[\"$\",\"$L1a\",null,{}],[\"$\",\"$L1b\",null,{}],[\"$\",\"$L1c\",null,{}],[\"$\",\"$L1d\",null,{\"children\":[[\"$\",\"div\",null,{\"className\":\"PageBackdrop-module-scss-module__KKf-uW__pageShell\",\"children\":[[\"$\",\"div\",null,{\"id\":\"page-backdrop-portal\",\"className\":\"PageBackdrop-module-scss-module__KKf-uW__slot\",\"aria-hidden\":\"true\"}],[\"$\",\"a\",null,{\"href\":\"#main-content\",\"className\":\"skip-link\",\"children\":\"Skip to content\"}],[\"$\",\"$L1e\",null,{\"featured\":{\"blog\":{\"title\":\"We gave all our employees access to Tines 3B. Here's what happened next.\",\"href\":\"/blog/tines-3b-first-90/\",\"imageUrl\":\"https://www.datocms-assets.com/55802/1788825912-2026-09-we-gave-employees-3b-header.png?auto=format%2Ccompress\u0026fit=crop\u0026h=420\u0026q=70\u0026w=800\"},\"event\":{\"title\":\"Wild code: You can’t govern what you can’t see\",\"href\":\"/webinars/wild-code-you-cant-govern-what-you-cant-see/\",\"imageUrl\":\"https://www.datocms-assets.com/55802/1785849013-techadvicewebinar-dato-1200-x-630-2.png?auto=format%2Ccompress\u0026fit=crop\u0026h=420\u0026q=70\u0026w=800\"}}}],[\"$\",\"$L1f\",null,{}],[\"$\",\"main\",null,{\"id\":\"main-content\",\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[null,[\"$\",\"div\",null,{\"className\":\"not-found-module-scss-module__DyuKYG__wrap\",\"children\":[[\"$\",\"$L20\",null,{\"className\":\"not-found-module-scss-module__DyuKYG__illustration\",\"src\":\"/v5-assets/images/tines-404-illustration-ufo.png\",\"alt\":\"\",\"width\":120,\"height\":120}],[\"$\",\"h1\",null,{\"className\":\"not-found-module-scss-module__DyuKYG__heading\",\"children\":\"Page not found\"}],[\"$\",\"p\",null,{\"className\":\"not-found-module-scss-module__DyuKYG__subtext\",\"children\":\"We couldn’t find what you were looking for.\"}],[\"$\",\"$L21\",null,{\"to\":\"/\",\"color\":\"purple\",\"shade\":700,\"children\":\"Go home\"}]]}]],[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/immutable/chunks/3_-011rjao1d9.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}],\"$L22\"]}],[\"$\",\"$L23\",null,{}],[\"$\",\"$L24\",null,{}],[\"$\",\"$L25\",null,{}]]}]]}]\n17:[[\"$\",\"$L26\",null,{\"id\":\"gtag-shim\",\"strategy\":\"afterInteractive\",\"data-cookieconsent\":\"ignore\",\"dangerouslySetInnerHTML\":{\"__html\":\"window.dataLayer=window.dataLayer||[];window.gtag=window.gtag||function(){dataLayer.push(arguments)};\"}}],[\"$\",\"$L26\",null,{\"id\":\"gtm-loader\",\"strategy\":\"afterInteractive\",\"data-cookieconsent\":\"ignore\",\"dangerouslySetInnerHTML\":{\"__html\":\"(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({\\\"gtm.start\\\":new Date().getTime(),event:\\\"gtm.js\\\"});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!=\\\"dataLayer\\\"?\\\"\u0026l=\\\"+l:\\\"\\\";j.async=true;j.src=\\\"https://www.googletagmanager.com/gtm.js?id=\\\"+i+dl;f.parentNode.insertBefore(j,f)})(window,document,\\\"script\\\",\\\"dataLayer\\\",\\\"GTM-5Z8VZQ5\\\");\"}}]]\n28:I[875931,[\"/_next/static/immutable/chunks/3sz971vfk095f.js\",\"/_next/static/immutable/chunks/0czgivygkxa1z.js\",\"/_next/static/immutable/chunks/2kpu_ktjkwf7q.js\",\"/_next/static/immutable/chunks/07hv-f84dhd61.js\",\"/_next/static/immutable/chunks/0639nwpv6l0pm.js\",\"/_next/static/immutable/chunks/2826pm12av2bw.js\",\"/_next/static/immutable/chunks/2_swgt_1o6v9a.js\"],\"IconMark\"]\n6:[\"$\",\"div\",null,{\"className\":\"blog-module-scss-module__RlMr6a__contentColumn\",\"children\":\"$L27\"}]\n9:null\ne:[[\"$\",\"title\",\"0\",{\"children\":\"Futureproofing Tines: Partitioning a 17TB table in PostgreSQL\"}],[\"$\",\"meta\",\"1\",{\"name\":\"keywords\",\"content\":\"Tines, security workflow automation, No-Code, SOAR\"}],[\"$\",\"link\",\"2\",{\"rel\":\"canonical\",\"href\":\"https://www.tines.com/blog/futureproofing-tines-partitioning-a-17tb-table-in-postgresql/\"}],[\"$\",\"meta\",\"3\",{\"property\":\"og:title\",\"content\":\"Futureproofing Tines: Partitioning a 17TB table in PostgreSQL\"}],[\"$\",\"meta\",\"4\",{\"property\":\"og:image\",\"content\":\"https://www.datocms-assets.com/55802/1768487001-2026-01-scaling-tines-partitioning-a-17tb-table-in-postgresql.png?auto=format%2Ccompress\u0026fit=max\u0026q=90\u0026w=2400\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"$\",\"meta\",\"6\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"7\",{\"name\":\"twitter:creator\",\"content\":\"@tines_hq\"}],[\"$\",\"meta\",\"8\",{\"name\":\"twitter:title\",\"content\":\"Tines | Intelligent workflow platform\"}],[\"$\",\"meta\",\"9\",{\"name\":\"twitter:description\",\"content\":\"Build and orchestrate intelligent workflows and agents, on the platform security and IT teams love.\"}],[\"$\",\"meta\",\"10\",{\"name\":\"twitter:image\",\"content\":\"https://www.tines.com/v5-assets/images/og/tines-home.png\"}],[\"$\",\"link\",\"11\",{\"rel\":\"icon\",\"href\":\"/v5-assets/favicon.png\"}],[\"$\",\"$L28\",\"12\",{}]]\n29:I[586848,[\"/_next/static/immutable/chunks/3sz971vfk095f.js\",\"/_next/static/immutable/chunks/0czgivygkxa1z.js\",\"/_next/static/immutable/chunks/2kpu_ktjkwf7q.js\",\"/_next/static/immutable/chunks/07hv-f84dhd61.js\",\"/_next/static/immutable/chunks/0639nwpv6l0pm.js\",\"/_next/static/immutable/chunks/2826pm12av2bw.js\",\"/_next/static/immutable/chunks/2_swgt_1o6v9a.js\"],\"FooterSection\"]\n2a:I[693529,[\"/_next/static/immutable/chunks/3sz971vfk095f.js\",\"/_next/static/immutable/chunks/0czgivygkxa1z.js\",\"/_next/static/immutable/chunks/2kpu_ktjkwf7q.js\",\"/_next/static/immutable/chunks/07hv-f84dhd61.js\",\"/_next/static/immutable/chunks/0639nwpv6l0pm.js\",\"/_next/static/immutable/chunks/2826pm12av2bw.js\",\"/_next/static/immutable/chunks/2_swgt_1o6v9a.js\",\"/_next/static/immutable/chunks/3pjhofejz57jt.js\",\"/_next/static/immutable/chunks/1q-89ajkqbbkw.js\",\"/_next/static/immutable/chunks/2uho2m59t6w8f.js\",\"/_next/static/immutable/chunks/2ti9pdu9p4n5l.js\",\"/_next/static/immutable/chunks/31qqpjo4d7384.js\",\"/_next/static/immutable/chunks/3zb6qebqmln4d.js\"],\"\"]\n22:[\"$\",\"footer\",null,{\"id\":\"site-footer\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__footer\",\"children\":[[\"$\",\"div\",null,{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__sections\",\"children\":[[[\"$\",\"$L29\",\"Product\",{\"title\":\"Product\",\"children\":[[\"$\",\"div\",\"0\",{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__group\",\"children\":[[\"$\",\"$L2a\",null,{\"href\":\"/3b/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__groupTitleLink\",\"children\":\"Tines 3B\"}],[[\"$\",\"$L2a\",\"Examples gallery\",{\"href\":\"/3b/examples/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Examples gallery\"}],[\"$\",\"$L2a\",\"Product updates\",{\"href\":\"/3b/product-updates/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Product updates\"}],[\"$\",\"a\",\"Docs\",{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"href\":\"https://docs.3b.tines.com/\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":[\"Docs\",[\"$\",\"span\",null,{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__externalMark\",\"aria-hidden\":\"true\",\"children\":\"↗\"}]]}],[\"$\",\"a\",\"Status\",{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"href\":\"https://status.tines.com/\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":[\"Status\",[\"$\",\"span\",null,{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__externalMark\",\"aria-hidden\":\"true\",\"children\":\"↗\"}]]}]]]}],[\"$\",\"div\",\"1\",{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__group\",\"children\":[[\"$\",\"$L2a\",null,{\"href\":\"/stories/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__groupTitleLink\",\"children\":\"Tines Stories\"}],[[\"$\",\"$L2a\",\"Storyboard\",{\"href\":\"/stories/storyboard/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Storyboard\"}],[\"$\",\"$L2a\",\"Cases\",{\"href\":\"/stories/cases/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Cases\"}],[\"$\",\"$L2a\",\"Workbench\",{\"href\":\"/stories/workbench/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Workbench\"}],[\"$\",\"$L2a\",\"Agents\",{\"href\":\"/stories/agents/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Agents\"}],[\"$\",\"$L2a\",\"Monitoring\",{\"href\":\"/stories/monitoring/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Monitoring\"}],[\"$\",\"$L2a\",\"Workflow capability matrix\",{\"href\":\"/workflow-capability-matrix/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Workflow capability matrix\"}],[\"$\",\"$L2a\",\"Templates\",{\"href\":\"/stories/templates/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Templates\"}],[\"$\",\"$L2a\",\"Library\",{\"href\":\"/library/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Library\"}],[\"$\",\"$L2a\",\"Five-minute flows\",{\"href\":\"/stories/five-minute-flows/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Five-minute flows\"}],[\"$\",\"a\",\"University\",{\"href\":\"/university/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"University\"}],[\"$\",\"$L2a\",\"What’s new\",{\"href\":\"/stories/whats-new/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"What’s new\"}],[\"$\",\"$L2a\",\"Docs and API\",{\"href\":\"/stories/docs/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Docs and API\"}],[\"$\",\"a\",\"Status\",{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"href\":\"https://status.tines.com/\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":[\"Status\",[\"$\",\"span\",null,{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__externalMark\",\"aria-hidden\":\"true\",\"children\":\"↗\"}]]}]]]}],[\"$\",\"div\",\"2\",{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__group\",\"children\":[null,[[\"$\",\"$L2a\",\"Pricing\",{\"href\":\"/pricing/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Pricing\"}]]]}]]}],[\"$\",\"$L29\",\"Solutions\",{\"title\":\"Solutions\",\"children\":[[\"$\",\"div\",\"0\",{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__group\",\"children\":[[\"$\",\"$L2a\",null,{\"href\":\"/solutions/it/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__groupTitleLink\",\"children\":\"IT\"}],[[\"$\",\"$L2a\",\"IT as a business enabler \",{\"href\":\"/solutions/it/it-as-a-business-enabler/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"IT as a business enabler \"}],\"$L2b\",\"$L2c\",\"$L2d\",\"$L2e\"]]}],\"$L2f\",\"$L30\",\"$L31\"]}],\"$L32\"],\"$L33\"]}],\"$L34\"]}]\n36:I[986992,[\"/_next/static/immutable/chunks/3sz971vfk095f.js\",\"/_next/static/immutable/chunks/0czgivygkxa1z.js\",\"/_next/static/immutable/chunks/2kpu_ktjkwf7q.js\",\"/_next/static/immutable/chunks/07hv-f84dhd61.js\",\"/_next/static/immutable/chunks/0639nwpv6l0pm.js\",\"/_next/static/immutable/chunks/2826pm12av2bw.js\",\"/_next/static/immutable/chunks/2_swgt_1o6v9a.js\"],\"CookieSettingsButton\"]\n2b:[\"$\",\"$L2a\",\"Infrastructure management\",{\"href\":\"/solutions/it/infrastructure-management/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Infrastructure management\"}]\n2c:[\"$\",\"$L2a\",\"Networking\",{\"href\":\"/solutions/it/networking/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Networking\"}]\n2d:[\"$\",\"$L2a\",\"Application management\",{\"href\":\"/solutions/it/application-management/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Application management\"}]\n2e:[\"$\",\"$L2a\",\"IT service delivery and support\",{\"href\":\"/solutions/it/it-service-delivery-and-support/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"IT service delivery and support\"}]\n2f:[\"$\",\"div\",\"1\",{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__group\",\"children\":[[\"$\",\"$L2a\",null,{\"href\":\"/solutions/security/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__groupTitleLink\",\"children\":\"Security\"}],[[\"$\",\"$L2a\",\"AI SOC\",{\"href\":\"/solutions/security/ai-soc/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"AI SOC\"}],[\"$\",\"$L2a\",\"SOAR\",{\"href\":\"/solutions/security/soar/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"SOAR\"}],[\"$\",\"$L2a\",\"GRC\",{\"href\":\"/solutions/security/governance-risk-and-compliance/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"GRC\"}],[\"$\",\"$L2a\",\"Threat intelligence\",{\"href\":\"/solutions/security/threat-intelligence/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Threat intelligence\"}],[\"$\",\"$L2a\",\"Vulnerability management\",{\"href\":\"/solutions/security/vulnerability-management/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Vulnerability management\"}],[\"$\",\"$L2a\",\"Network security\",{\"href\":\"/solutions/security/network-security/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Network security\"}]]]}]\n30:[\"$\",\"div\",\"2\",{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__group\",\"children\":[null,[[\"$\",\"$L2a\",\"Public sector\",{\"href\":\"/public-sector/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf SiteFooter26-module-scss-module__LzK7FG__leafBold\",\"children\":\"Public sector\"}],[\"$\",\"$L2a\",\"Financial services\",{\"href\":\"/financial-services/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf SiteFooter26-module-scss-module__LzK7FG__leafBold\",\"children\":\"Financial services\"}],[\"$\",\"$L2a\",\"MSSPs\",{\"href\":\"/mssps/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf SiteFooter26-module-scss-module__LzK7FG__leafBold\",\"children\":\"MSSPs\"}]]]}]\n31:[\"$\",\"div\",\"3\",{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__group\",\"children\":[null,[[\"$\",\"a\",\"Professional services\",{\"href\":\"/professional-services/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Professional services\"}],[\"$\",\"$L2a\",\"AI in Tines\",{\"href\":\"/ai-in-tines/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"AI in Tines\"}],[\"$\",\"a\",\"Enterprise\",{\"href\":\"/enterprise/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Enterprise\"}]]]}]\n32:[\"$\",\"$L29\",\"Discover\",{\"title\":\"Discover\",\"children\":[[\"$\",\"div\",\"0\",{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__group\",\"children\":[[\"$\",\"$L2a\",null,{\"href\":\"/customers/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__groupTitleLink\",\"children\":\"Customers\"}],[]]}],[\"$\",\"div\",\"1\",{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__group\",\"children\":[[\"$\",\"$L2a\",null,{\"href\":\"/blog/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__groupTitleLink\",\"children\":\"Blog\"}],[[\"$\",\"$L2a\",\"Series\",{\"href\":\"/blog/series/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Series\"}],[\"$\",\"$L2a\",\"Guides\",{\"href\":\"/blog/guides/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Guides\"}],[\"$\",\"a\",\"Podcast\",{\"href\":\"/podcast/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Podcast\"}]]]}],[\"$\",\"div\",\"2\",{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__group\",\"children\":[[\"$\",\"$L2a\",null,{\"href\":\"/events/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__groupTitleLink\",\"children\":\"Events\"}],[[\"$\",\"a\",\"Webinars\",{\"href\":\"/webinars/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Webinars\"}],[\"$\",\"a\",\"Bootcamps\",{\"href\":\"/bootcamps/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Bootcamps\"}],[\"$\",\"$L2a\",\"Builder Connect\",{\"href\":\"/events/builder-connect/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Builder Connect\"}],[\"$\",\"a\",\"Workflow.live\",{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"href\":\"https://www.workflow.live/\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":[\"Workflow.live\",[\"$\",\"span\",null,{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__externalMark\",\"aria-hidden\":\"true\",\"children\":\"↗\"}]]}]]]}],[\"$\",\"div\",\"3\",{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__group\",\"children\":[null,[[\"$\",\"a\",\"Community\",{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"href\":\"https://community.tines.com/\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":[\"Community\",[\"$\",\"span\",null,{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__externalMark\",\"aria-hidden\":\"true\",\"children\":\"↗\"}]]}],[\"$\",\"a\",\"YDWWT\",{\"href\":\"/you-did-what-with-tines/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"YDWWT\"}]]]}],[\"$\",\"div\",\"4\",{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__group\",\"children\":[null,[[\"$\",\"a\",\"Customer center\",{\"href\":\"/customer-center/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Customer center\"}]]]}]]}]\n33:[\"$\",\"div\",null,{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__stackedColumn\",\"children\":[[\"$\",\"$L29\",\"Company\",{\"title\":\"Company\",\"children\":[[\"$\",\"div\",\"0\",{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__group\",\"children\":[null,[[\"$\",\"$L2a\",\"About us\",{\"href\":\"/about/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"About us\"}],[\"$\",\"a\",\"Careers\",{\"href\":\"/careers/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Careers\"}],[\"$\",\"a\",\"Newsroom\",{\"href\":\"/newsroom/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Newsroom\"}],[\"$\",\"$L2a\",\"Partners\",{\"href\":\"/partners/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Partners\"}],[\"$\",\"$L2a\",\"Contact\",{\"href\":\"/contact/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Contact\"}],[\"$\",\"a\",\"Store\",{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"href\":\"https://store.tines.com/\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":[\"Store\",[\"$\",\"span\",null,{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__externalMark\",\"aria-hidden\":\"true\",\"children\":\"↗\"}]]}],[\"$\",\"a\",\"Brand assets\",{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"href\":\"https://live.standards.site/tines\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":[\"Brand assets\",[\"$\",\"span\",null,{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__externalMark\",\"aria-hidden\":\"true\",\"children\":\"↗\"}]]}]]]}],[\"$\",\"div\",\"1\",{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__group\",\"children\":[null,[[\"$\",\"a\",\"LinkedIn\",{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"href\":\"https://www.linkedin.com/company/tines-io/\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":[\"LinkedIn\",[\"$\",\"span\",null,{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__externalMark\",\"aria-hidden\":\"true\",\"children\":\"↗\"}]]}],[\"$\",\"a\",\"X\",{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"href\":\"https://twitter.com/tines_hq\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":[\"X\",[\"$\",\"span\",null,{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__externalMark\",\"aria-hidden\":\"true\",\"children\":\"↗\"}]]}],[\"$\",\"a\",\"YouTube\",{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"href\":\"https://www.youtube.com/@TinesHQ\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":[\"YouTube\",[\"$\",\"span\",null,{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__externalMark\",\"aria-hidden\":\"true\",\"children\":\"↗\"}]]}]]]}]]}],[\"$\",\"$L29\",\"Trust and security\",{\"title\":\"Trust and security\",\"children\":[[\"$\",\"div\",\"0\",{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__group\",\"children\":[[\"$\",\"a\",null,{\"href\":\"/security/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__groupTitleLink\",\"children\":\"Security\"}],[[\"$\",\"a\",\"Security best practices\",{\"href\":\"/tines-security-best-practices/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Security best practices\"}],[\"$\",\"a\",\"Trust center\",{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"href\":\"https://trust.tines.com/\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":[\"Trust center\",[\"$\",\"span\",null,{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__externalMark\",\"aria-hidden\":\"true\",\"children\":\"↗\"}]]}]]]}],[\"$\",\"div\",\"1\",{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__group\",\"children\":[[\"$\",\"a\",null,{\"href\":\"/legal/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__groupTitleLink\",\"children\":\"Legal\"}],[[\"$\",\"a\",\"Privacy\",{\"href\":\"/privacy/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Privacy\"}],[\"$\",\"a\",\"Terms\",{\"href\":\"/terms/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Terms\"}],[\"$\",\"a\",\"DPA\",{\"href\":\"/dpa/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"DPA\"}],[\"$\",\"a\",\"Cookies policy\",{\"href\":\"/cookies-policy/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__leaf\",\"children\":\"Cookies policy\"}]]]}]]}]]}]\n35:T44a,M17.6641 0C11.9485 0 6.89478 3.68623 5.18424 9.10302L0.47998 24L5.18424 38.897C6.89479 44.3138 11.9485 48 17.6641 48H30.3358C36.0515 48 41.1052 44.3138 42.8157 38.897L47.52 24L42.8157 9.10302C41.1052 3.68623 36.0515 0 30.3358 0H17.6641ZM30.336 3.74451C34.4042 3.74451 38.0012 6.36822 39.2187 10.2237L40.372 13.8759C38.0518 11.9723 35.1137 10.9008 32.0429 10.9006L15.9228 10.9002C12.8726 10.9004 9.9534 11.9575 7.64056 13.8372L8.78167 10.2237C9.99917 6.36822 13.5962 3.74451 17.6643 3.74451H30.336ZM8.51076 18.2979L5.58159 22.1278L42.3838 22.1278L39.4549 18.2983C37.6948 15.9969 34.9524 14.6453 32.0426 14.6451H15.835C12.958 14.6723 10.2531 16.0197 8.51076 18.2979ZM42.3778 25.8723L39.4547 29.6983C37.6944 32.0023 34.9501 33.3555 32.0381 33.3553L15.9271 33.3548C13.0152 33.3551 10.2708 32.0019 8.51056 29.6979L5.58776 25.8723L42.3778 25.8723ZM8.78145 37.7763C9.99894 41.6318 13.5959 44.2555 17.6641 44.2555H30.3358C34.404 44.2555 38.001 41.6318 39.2185 37.7763L40.3726 34.1214C38.0514 36.0273 35.111 37.1 32.0378 37.0998L15.9274 37.0994C12.8747 37.0996 9.9531 36.0412 7.63915 34.159L8.78145 37.7763Z34:[\"$\",\"div\",null,{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__bottomBar\",\"children\":[[\"$\",\"span\",null,{\"children\":\"© Tines\"}],[\"$\",\"$L2a\",null,{\"href\":\"/\",\"className\":\"SiteFooter26-module-scss-module__LzK7FG__bottomLogo\",\"title\":\"Tines\",\"children\":[\"$\",\"svg\",null,{\"className\":\"tines-logo-icon \",\"width\":28,\"height\":28,\"viewBox\":\"0 0 48 48\",\"fill\":\"currentColor\",\"children\":[\"$\",\"path\",null,{\"fillRule\":\"evenodd\",\"clipRule\":\"evenodd\",\"d\":\"$35\"}]}]}],[\"$\",\"$L36\",null,{\"className\":\"SiteFooter26-module-scss-module__LzK7FG__cookieSettings\"}]]}]\n37:I[383156,[\"/_next/static/immutable/chunks/3sz971vfk095f.js\",\"/_next/static/immutable/chunks/0czgivygkxa1z.js\",\"/_next/static/immutable/chunks/2kpu_ktjkwf7q.js\",\"/_next/static/immutable/chunks/07hv-f84dhd61.js\",\"/_next/static/immutable/chunks/0639nwpv6l0pm.js\",\"/_next/static/immutable/chunks/2826pm12av2bw.js\",\"/_next/static/immutable/chunks/2_swgt_1o6v9a.js\",\"/_next/static/immutable/chunks/3pjhofejz57jt.js\",\"/_next/static/immutable/chunks/1q-89ajkqbbkw.js\",\"/_next/static/immutable/chunks/2uho2m59t6w8f.js\",\"/_next/static/immutable/chunks/2ti9pdu9p4n5l.js\",\"/_next/static/immutable/chunks/31qqpjo4d7384.js\",\"/_next/static/immutable/chunks/3zb6qebqmln4d.js\"],\"HashScroller\"]\n38:I[62200,[\"/_next/static/immutable/chunks/3sz971vfk095f.js\",\"/_next/static/immutable/chunks/0czgivygkxa1z.js\",\"/_next/static/immutable/chunks/2kpu_ktjkwf7q.js\",\"/_next/static/immutable/chunks/07hv-f84dhd61.js\",\"/_next/static/immutable/chunks/0639nwpv6l0pm.js\",\"/_next/static/immutable/chunks/2826pm12av2bw.js\",\"/_next/static/immutable/chunks/2_swgt_1o6v9a.js\",\"/_next/static/immutable/chunks/3pjhofejz57jt.js\",\"/_next/static/immutable/chunks/1q-89ajkqbbkw.js\",\"/_next/static/immutable/chunks/2uho2m59t6w8f.js\",\"/_next/static/immutable/chunks/2ti9pdu9p4n5l.js\",\"/_next/static/immutable/chunks/31qqpjo4d7384.js\",\"/_next/static/immutable/chunks/3zb6qebqmln4d.js\"],\"SetAreaNavActive\"]\n39:I[667226,[\"/_next/static/immutable/chunks/3sz971vfk095f.js\",\"/_next/static/immutable/chunks/0czgivygkxa1z.js\",\"/_next/static/immutable/chunks/2kpu_ktjkwf7q.js\",\"/_next/static/immutable/chunks/07hv-f84dhd61.js\",\"/_next/static/immutable/chunks/0639nwpv6l0pm.js\",\"/_next/static/immutable/chunks/2826pm12av2bw.js\",\"/_next/static/immutable/chunks/2_swgt_1o6v9a.js\",\"/_next/static/immutable/chunks/3pjhofejz57jt.js\",\"/_next/static/immutable/chunks/1q-89ajkqbbkw.js\",\"/_next/static/immutable/chunks/2uho2m59t6w8f.js\",\"/_next/static/immutable/chunks/2ti9pdu9p4n5l.js\",\"/_next/static/immutable/chunks/31qqpjo4d7384.js\",\"/_next/static/immutable/chunks/3zb6qebqmln4d.js\"],\"PageOutline\"]\n3a:I[729731,[\"/_next/static/immutable/chunks/3sz971vfk095f.js\",\"/_next/static/immutable/chunks/0czgivygkxa1z.js\",\"/_next/static/immutable/chunks/2kpu_ktjkwf7q.js\",\"/_next/static/immutable/chunks/07hv-f84dhd61.js\",\"/_next/static/immutable/chunks/0639nwpv6l0pm.js\",\"/_next/static/immutable/chunks/2826pm12av2bw.js\",\"/_next/static/immutable/chunks/2_swgt_1o6v9a.js\",\"/_next/static/immutable/chunks/3pjhofejz57jt.js\",\"/_next/static/immutable/chunks/1q-89ajkqbbkw.js\",\"/_next/static/immutable/chunks/2uho2m59t6w8f.js\",\"/_next/static/immutable/chunks/2ti9pdu9p4n5l.js\",\"/_next/static/immutable/chunks/31qqpjo4d7384.js\",\"/_next/static/immutable/chunks/3zb6qebqmln4d.js\"],\"SmartLink\"]\n27:[[\"$\",\"$L37\",null,{}],[\"$\",\"$L38\",null,{\"href\":\"/blog/engineering/\"}],[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"BlogPosting\\\",\\\"headline\\\":\\\"Futureproofing Tines: Partitioning a 17TB table in PostgreSQL\\\",\\\"datePublished\\\":\\\"2026-01-20T05:00:00+00:00\\\",\\\"dateModified\\\":\\\"2026-01-21T15:51:37+00:00\\\",\\\"url\\\":\\\"https://www.tines.com/blog/futureproofing-tines-partitioning-a-17tb-table-in-postgresql/\\\",\\\"image\\\":\\\"https://www.datocms-assets.com/55802/1768487001-2026-01-scaling-tines-partitioning-a-17tb-table-in-postgresql.png?auto=format%2Ccompress\u0026fit=max\u0026q=90\u0026w=2400\\\",\\\"author\\\":[{\\\"@type\\\":\\\"Person\\\",\\\"name\\\":\\\"Julianne Walker\\\"}],\\\"publisher\\\":{\\\"@type\\\":\\\"Organization\\\",\\\"name\\\":\\\"Tines\\\",\\\"url\\\":\\\"https://www.tines.com\\\"}}\"}}],[\"$\",\"div\",null,{\"className\":\"$undefined\",\"style\":{\"display\":\"block\",\"width\":\"var(--xl)\",\"height\":\"var(--xl)\",\"flex\":\"0 0 var(--xl)\",\"userSelect\":\"none\"}}],[\"$\",\"header\",null,{\"children\":[null,[\"$\",\"h1\",null,{\"className\":\"ArticlePageHeader-module-scss-module__szLeSa__title\",\"children\":\"Futureproofing Tines: Partitioning a 17TB table in PostgreSQL\"}],[\"$\",\"div\",null,{\"className\":\"ArticlePageHeader-module-scss-module__szLeSa__authorInfo\",\"children\":[[\"$\",\"div\",null,{\"className\":\"ArticlePageHeader-module-scss-module__szLeSa__authors\",\"children\":[[\"$\",\"div\",null,{\"className\":\"ArticlePageHeader-module-scss-module__szLeSa__authorPhotos\",\"children\":[[\"$\",\"$L20\",\"169306819\",{\"src\":\"https://www.datocms-assets.com/55802/1693512920-julianne.jpeg?auto=format%2Ccompress\u0026fit=max\u0026q=80\u0026w=128\",\"alt\":\"\",\"className\":\"ArticlePageHeader-module-scss-module__szLeSa__authorPhoto\",\"width\":42,\"height\":42,\"loading\":\"eager\"}]]}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"span\",null,{\"className\":\"ArticlePageHeader-module-scss-module__szLeSa__authorName\",\"children\":[[\"$\",\"span\",null,{\"className\":\"ArticlePageHeader-module-scss-module__szLeSa__writtenBy\",\"children\":\"Written by \"}],[[\"$\",\"span\",\"169306819\",{\"children\":[\"Julianne Walker\",\"\"]}]]]}],null]}]]}],[\"$\",\"div\",null,{\"className\":\"ArticlePageHeader-module-scss-module__szLeSa__meta\",\"children\":[[\"$\",\"time\",null,{\"dateTime\":\"2026-01-20T05:00:00.000Z\",\"children\":[\"Published on \",\"January 20, 2026\"]}],[\"$\",\"div\",null,{\"className\":\"ArticlePageHeader-module-scss-module__szLeSa__categoryPills\",\"children\":[[\"$\",\"$L2a\",\"engineering\",{\"href\":\"/blog/engineering/\",\"className\":\"ArticlePageHeader-module-scss-module__szLeSa__categoryPill\",\"children\":\"Engineering\"}]]}]]}]]}]]}],null,[\"$\",\"div\",null,{\"className\":\"$undefined\",\"style\":{\"display\":\"block\",\"width\":\"var(--lg)\",\"height\":\"var(--lg)\",\"flex\":\"0 0 var(--lg)\",\"userSelect\":\"none\"}}],[\"$\",\"div\",null,{\"className\":\"page-module-scss-module__Z5AZta__articleLayout\",\"children\":[[\"$\",\"aside\",null,{\"className\":\"page-module-scss-module__Z5AZta__articleAside\",\"children\":[\"$\",\"$L39\",null,{}]}],[\"$\",\"div\",null,{\"className\":\"page-module-scss-module__Z5AZta__articleMain\",\"children\":[[\"$\",\"div\",null,{\"className\":\"page-module-scss-module__Z5AZta__coverImage\",\"children\":[\"$\",\"$L20\",null,{\"src\":\"https://www.datocms-assets.com/55802/1768487001-2026-01-scaling-tines-partitioning-a-17tb-table-in-postgresql.png?auto=format%2Ccompress\u0026fit=max\u0026q=90\u0026w=2400\",\"width\":2400,\"height\":1260,\"alt\":\"Cover image for Futureproofing Tines: Partitioning a 17TB table in PostgreSQL\",\"sizes\":\"(max-width: 767px) 100vw, (max-width: 1439px) 70vw, 1040px\",\"quality\":90,\"loading\":\"eager\"}]}],null,[\"$\",\"article\",null,{\"className\":\"Article-module-scss-module__ZE_SmG__article page-module-scss-module__Z5AZta__articleContent\",\"children\":[[[\"$\",\"p\",\"0\",{\"children\":[[\"$\",\"strong\",\"0\",{\"children\":\"At Tines, we recently faced a significant engineering challenge: \"}],\"our \",[\"$\",\"code\",\"2\",{\"children\":\"output_payloads\"}],\" table in PostgreSQL was rapidly approaching 17TB on our largest cloud cluster, with no signs of slowing down. Once a table reaches PostgreSQL’s \",[\"$\",\"$L3a\",\"4\",{\"to\":\"https://www.postgresql.org/docs/current/limits.html\",\"children\":[\"$L3b\"]}],\"$L3c\",\"$L3d\",\"$L3e\"]}],\"$L3f\",\"$L40\",\"$L41\",\"$L42\",\"$L43\",\"$L44\",\"$L45\",\"$L46\",\"$L47\",\"$L48\",\"$L49\",\"$L4a\",\"$L4b\",\"$L4c\",\"$L4d\",\"$L4e\",\"$L4f\",\"$L50\",\"$L51\",\"$L52\",\"$L53\",\"$L54\",\"$L55\",\"$L56\",\"$L57\",\"$L58\",\"$L59\",\"$L5a\",\"$L5b\",\"$L5c\",\"$L5d\",\"$L5e\",\"$L5f\",\"$L60\",\"$L61\",\"$L62\",\"$L63\",\"$L64\",\"$L65\",\"$L66\",\"$L67\",\"$L68\",\"$L69\",\"$L6a\",\"$L6b\",\"$L6c\",\"$L6d\",\"$L6e\",\"$L6f\",\"$L70\",\"$L71\",\"$L72\",\"$L73\",\"$L74\",\"$L75\",\"$L76\",\"$L77\",\"$L78\",\"$L79\",\"$L7a\",\"$L7b\",\"$L7c\",\"$L7d\",\"$L7e\",\"$L7f\",\"$L80\",\"$L81\",\"$L82\",\"$L83\",\"$L84\",\"$L85\",\"$L86\",\"$L87\",\"$L88\",\"$L89\",\"$L8a\",\"$L8b\",\"$L8c\",\"$L8d\",\"$L8e\",\"$L8f\"],\"$L90\"]}],null,null]}]]}],null,\"$L91\"]\n92:I[383156,[\"/_next/static/immutable/chunks/3sz971vfk095f.js\",\"/_next/static/immutable/chunks/0czgivygkxa1z.js\",\"/_next/static/immutable/chunks/2kpu_ktjkwf7q.js\",\"/_next/static/immutable/chunks/07hv-f84dhd61.js\",\"/_next/static/immutable/chunks/0639nwpv6l0pm.js\",\"/_next/static/immutable/chunks/2826pm12av2bw.js\",\"/_next/static/immutable/chunks/2_swgt_1o6v9a.js\",\"/_next/static/immutable/chunks/3pjhofejz57jt.js\",\"/_next/static/immutable/chunks/1q-89ajkqbbkw.js\",\"/_next/static/immutable/chunks/2uho2m59t6w8f.js\",\"/_next/static/immutable/chunks/2ti9pdu9p4n5l.js\",\"/_next/static/immutable/chunks/31qqpjo4d7384.js\",\"/_next/static/immutable/chunks/3zb6qebqmln4d.js\"],\"LinkedHeading\"]\na5:I[285528,[\"/_next/static/immutable/chunks/3sz971vfk095f.js\",\"/_next/static/immutable/chunks/0czgivygkxa1z.js\",\"/_next/static/immutable/chunks/2kpu_ktjkwf7q.js\",\"/_next/static/immutable/chunks/07hv-f84dhd61.js\",\"/_next/static/immutable/chunks/0639nwpv6l0pm.js\",\"/_next/static/immutable/chunks/2826pm12av2bw.js\",\"/_next/static/immutable/chunks/2_swgt_1o6v9a.js\",\"/_next/static/immutable/chunks/3pjhofejz57jt.js\",\"/_next/static/immutable/chunks/1q-89ajkqbbkw.js\",\"/_next/static/immutable/chunks/2uho2m59t6w8f.js\",\"/_next/static/immutable/chunks/2ti9pdu9p4n5l.js\",\"/_next/static/immutable/chunks/31qqpjo4d7384.js\",\"/_next/static/immutable/chunks/3zb6qebqmln4d.js\"],\"CodeBlockCopy\"]\n3b:\"32TB table size limit\"\n3c:\", it will stop accepting writes. This table holds \"\n3d:[\"$\",\"$L3a\",\"6\",{\"to\":\"https://www.tines.com/docs/events/\",\"children\":[\"event\"]}]\n3e:\" data, in the form of arbitrary JSON, which is critical to powering Tines workflows. Given the criticality of the data, we couldn’t risk any disruptions to it. \"\n3f:[\"$\",\"p\",\"1\",{\"children\":[\"As our monitoring showed the table's growth, we began experiencing warning signs. Cleanup jobs on the table had begun to time out. The table was causing increased I/O pressure on our infrastructure, leading us to use more expensive hardware. The arbitrary JSON shape of the data meant massive \",[\"$\",\"$L3a\",\"1\",{\"to\":\"https://www.postgresql.org/docs/current/routine-vacuuming.html\",\"children\":[[\"$\",\"code\",\"0\",{\"children\":\"autovacuum\"}]]}],\" jobs on its \",[\"$\",\"$L3a\",\"3\",{\"to\":\"https://www.postgresql.org/docs/current/storage-toast.html\",\"children\":[\"TOAST\"]}],\" table. When these \",[\"$\",\"code\",\"5\",{\"children\":\"autovacuums\"}],\" ran, they displaced other tables from the buffer cache, forcing disk reads in critical areas. As a bandaid, we modified the \",[\"$\",\"$L3a\",\"7\",{\"to\":\"https://www.postgresql.org/docs/17/runtime-config-autovacuum.html\",\"children\":[\"autovacuum parameters\"]}],\" of the table so that the autovacuums would run more frequently, but have less tuples to process. With performance slowly degrading, and 32TB looming on the horizon, we knew we needed to act decisively.\"]}]\n40:[\"$\",\"$L92\",\"2\",{\"level\":2,\"id\":\"enter-partitioning\",\"children\":[\"Enter: Partitioning\"]}]\n41:[\"$\",\"p\",\"3\",{\"children\":[\"We started off with partitioning over sharding, which involves splitting data across multiple independent database instances. We took this approach as we wanted to avoid the complexities of sharding until we were convinced it was absolutely necessary.\"]}]\n42:[\"$\",\"p\",\"4\",{\"children\":[\"To partition a database table is to divide it into multiple, smaller tables. Each of these smaller tables is a sub-table of the main table, and therefore holds a subset of the data that belongs to the main table. Partitioning is a good idea when you want to spread the data in one table to many tables for better query performance. With partitioning, the database needs to scan less data for each query. Tables that are ideal candidates for partitioning typically exhibit characteristics like: substantial size, high data ingestion rates, significant maintenance overhead (such as prolonged vacuuming and indexing operations), and noticeable query performance degradation. We started to observe these characteristics on our \",[\"$\",\"code\",\"1\",{\"children\":\"output_payloads\"}],\" table. You can’t alter an existing table to be a partitioned one without taking a downtime, however, so we would have to start fresh with a new, partitioned table. We named the the new table \",[\"$\",\"code\",\"3\",{\"children\":\"event_payloads\"}],\".\"]}]\n43:[\"$\",\"$L92\",\"5\",{\"level\":2,\"id\":\"our-quest-for-the-optimal-partitioning-strategy\",\"children\":[[\"$\",\"strong\",\"0\",{\"children\":\"Our quest for the optimal partitioning strategy\"}]]}]\n93:T467,We ingest over 6TB of data daily in our cloud clusters. This volume made it essential that we select a partitioning strategy capable of efficiently handling our two most important query patterns: point queries and range queries. Point queries find specific records by their unique identifiers and/or attributes, such as by id, while range queries retrieve sets of records where a specific value falls within a defined upper and lower boundary. An example of a common range query is time periods, such as querying for all records created within the last 24 hours. As much as possible, we knew we’d need to ensure even data distribution across partitions to prevent what we called \"hot partitions,\" where a disproportionate amount of rows concentrate in specific partitions. Such imbalances could cause tasks like autovacuum to time out as a single partition grows, and force point queries to scan excessive amounts of data. The goal was to maintain consistent performance, while accommodating our massive data ingestion requirements. In our quest for the optimal partitioning strategy, we considered four different approaches:44:[\"$\",\"p\",\"6\",{\"children\":[\"$93\"]}]\n45:[\"$\",\"$L92\",\"7\",{\"level\":3,\"id\":\"strategy-1-partition-based-on-created_at\",\"children\":[\"Strategy 1: Partition based on \",[\"$\",\"code\",\"1\",{\"children\":\"created_at\"}]]}]\n46:[\"$\",\"p\",\"8\",{\"children\":[\"With this strategy, we would partition the data such that records created on the same day would be stored in a single table. For example, the sub-tables would look like:\"]}]\n94:T964,\u003cpre class=\"shiki shiki-themes tines-light tines-dark\" style=\"--shiki-light:#2e2d36;--shiki-dark:#f8f4f0;--shiki-light-bg:#00000000;--shiki-dark-bg:#00000000\" tabindex=\"0\"\u003e\u003ccode\u003e\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eevent_payloads_p2025_03_21\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e --\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Contains\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e all\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e records\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e from\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e March\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 21\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 2025\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eevent_payloads_p2025_03_22\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e --\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Contains\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e all\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e records\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e from\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e March\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 22\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 2025\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eevent_payloads_p2025_03_23\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e --\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Contains\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e all\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e records\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e from\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e March\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 23\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 2025\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e47:[\"$\",\"div\",\"9\",{\"dangerouslySetInnerHTML\":{\"__html\":\"$94\"}}]\n48:[\"$\",\"p\",\"10\",{\"children\":[\"A time-based partitioning strategy like this works well for cleaning up expired data. In our app, users can choose how long to keep their data for (up to a year). With time-based partitioning, that meant we could safely drop an entire partition after a year. In order to drop old partitions and create new ones on a schedule, we could use a ruby gem called \",[\"$\",\"$L3a\",\"1\",{\"to\":\"https://github.com/honeybadger-io/pg_partition_manager\",\"children\":[[\"$\",\"code\",\"0\",{\"children\":\"pg_partition_manager\"}]]}],\". This gem simplifies the management of partitioned tables in PostgreSQL by programmatically creating new partitions and dropping old ones as data ages out. Although it sounded promising, time-based partitioning complicated point queries. There are several places in our app where we query for \",[\"$\",\"code\",\"3\",{\"children\":\"event_payloads\"}],\" by id and/or some other specific value. With this strategy, PostgreSQL had no way of knowing which partition contained the target records. Therefore, it had to scan every partition until it found the \",[\"$\",\"code\",\"5\",{\"children\":\"event_payload(s)\"}],\" with the specified values.\"]}]\n49:[\"$\",\"p\",\"11\",{\"children\":[\"Here is an example query that we might have in our app:\"]}]\n95:T7b3,\u003cpre class=\"shiki shiki-themes tines-light tines-dark\" style=\"--shiki-light:#2e2d36;--shiki-dark:#f8f4f0;--shiki-light-bg:#00000000;--shiki-dark-bg:#00000000\" tabindex=\"0\"\u003e\u003ccode\u003e\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eSELECT\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e *\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e FROM\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eWHERE\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e id\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e IN\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1088692569\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1088694904\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1088696787\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1089012063\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1089012074\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) \u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eAND\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e key\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e '\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003eget_alert_details\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e'\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e;\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e4a:[\"$\",\"div\",\"12\",{\"dangerouslySetInnerHTML\":{\"__html\":\"$95\"}}]\n4b:[\"$\",\"p\",\"13\",{\"children\":[\"This was the query plan partitioning by day (truncated):\"]}]\n96:Td08d,\u003cpre class=\"shiki shiki-themes tines-light tines-dark\" style=\"--shiki-light:#2e2d36;--shiki-dark:#f8f4f0;--shiki-light-bg:#00000000;--shiki-dark-bg:#00000000\" tabindex=\"0\"\u003e\u003ccode\u003e\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003eLimit\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ecost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e207.43\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.207\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e48\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e22\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e125\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.148\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.0\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e155\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Buffers\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e shared\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e hit\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e44\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e Sort\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ecost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e207.43\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.207\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e48\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e22\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e125\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.147\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.0\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e153\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Sort\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Key\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eid\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e DESC\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Sort\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Method\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e quicksort\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Memory\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e 25\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ekB\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Buffers\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e shared\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e hit\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e44\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e Append\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ecost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.29\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.206\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e94\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e22\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e125\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.141\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.0\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e147\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Buffers\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e shared\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e hit\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e44\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Scan\u003c/span\u003e\u003cspan style=\"--shiki-light:#A54B7A;--shiki-dark:#F486B8\"\u003e using\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_p2025_03_21_tenant_id_idx\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e on event_payloads_p2025_03_21 event_payloads_1 (cost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.29\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.4\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e32\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e202\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.025\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.0\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e025\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Cond\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003etenant_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 24020\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Filter\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (((\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ekey\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)::\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003etext\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e '\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003eget_alert_details\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e'\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e::\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003etext\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) \u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003eAND\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eid\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e ANY\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e'\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e{1088692569,1088694904,1088696787,1089012063,1089012074}\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e'\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e::\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ebigint\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e[])))\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Buffers\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e shared\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e hit\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e2\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Scan\u003c/span\u003e\u003cspan style=\"--shiki-light:#A54B7A;--shiki-dark:#F486B8\"\u003e using\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_p2025_03_22_tenant_id_idx\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e on event_payloads_p2025_03_22 event_payloads_2 (cost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.29\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.4\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e32\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e202\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.015\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.0\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e015\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Cond\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003etenant_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 24020\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Filter\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (((\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ekey\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)::\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003etext\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e '\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003eget_alert_details\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e'\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e::\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003etext\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) \u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003eAND\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eid\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e ANY\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e'\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e{1088692569,1088694904,1088696787,1089012063,1089012074}\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e'\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e::\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ebigint\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e[])))\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Buffers\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e shared\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e hit\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e2\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Scan\u003c/span\u003e\u003cspan style=\"--shiki-light:#A54B7A;--shiki-dark:#F486B8\"\u003e using\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_p2025_03_23_tenant_id_idx\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e on event_payloads_p2025_03_23 event_payloads_3 (cost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.29\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.4\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e32\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e202\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.016\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.0\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e016\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Cond\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003etenant_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 24020\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Filter\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (((\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ekey\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)::\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003etext\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e '\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003eget_alert_details\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e'\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e::\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003etext\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) \u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003eAND\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eid\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e ANY\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e'\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e{1088692569,1088694904,1088696787,1089012063,1089012074}\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e'\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e::\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ebigint\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e[])))\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Buffers\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e shared\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e hit\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e2\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e...\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Bitmap\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Heap\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Scan\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e on\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_p2025_03_26\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e event_payloads_6\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ecost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e4.17\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.11\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e31\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e96\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.005\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.0\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e005\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Recheck\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Cond\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003etenant_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 24020\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Filter\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (((\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ekey\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)::\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003etext\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e '\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003eget_alert_details\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e'\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e::\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003etext\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) \u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003eAND\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eid\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e ANY\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e'\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e{1088692569,1088694904,1088696787,1089012063,1089012074}\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e'\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e::\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ebigint\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e[])))\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Buffers\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e shared\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e hit\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e2\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Bitmap\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Scan\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e on\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e event_payloads_p2025_03_26_tenant_id_idx\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ecost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.00\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.4\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e17\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e3\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.003\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.0\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e003\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Cond\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003etenant_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 24020\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Buffers\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e shared\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e hit\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e2\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Bitmap\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Heap\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Scan\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e on\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_p2025_03_27\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e event_payloads_7\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ecost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e4.17\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.11\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e31\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e96\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.002\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.0\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e003\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Recheck\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Cond\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003etenant_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 24020\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Filter\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (((\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ekey\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)::\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003etext\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e '\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003eget_alert_details\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e'\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e::\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003etext\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) \u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003eAND\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eid\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e ANY\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e'\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e{1088692569,1088694904,1088696787,1089012063,1089012074}\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e'\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e::\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ebigint\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e[])))\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Buffers\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e shared\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e hit\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e2\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Bitmap\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Scan\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e on\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e event_payloads_p2025_03_27_tenant_id_idx\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ecost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.00\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.4\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e17\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e3\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.002\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.0\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e002\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Cond\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003etenant_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 24020\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Buffers\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e shared\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e hit\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e2\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Bitmap\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Heap\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Scan\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e on\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_p2025_03_28\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e event_payloads_8\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ecost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e4.17\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.11\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e31\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e96\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.002\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.0\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e002\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Recheck\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Cond\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003etenant_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 24020\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Filter\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (((\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ekey\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)::\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003etext\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e '\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003eget_alert_details\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e'\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e::\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003etext\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) \u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003eAND\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eid\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e ANY\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e'\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e{1088692569,1088694904,1088696787,1089012063,1089012074}\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e'\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e::\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ebigint\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e[])))\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Buffers\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e shared\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e hit\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e2\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Bitmap\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Scan\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e on\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e event_payloads_p2025_03_28_tenant_id_idx\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ecost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.00\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.4\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e17\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e3\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.002\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.0\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e002\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Cond\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003etenant_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 24020\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Buffers\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e shared\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e hit\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e2\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e...\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003ePlanning\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Buffers\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e shared\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e hit\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e32\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ePlanning\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 1.137\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e ms\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eExecution\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 5.559\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e ms\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e4c:[\"$\",\"div\",\"14\",{\"dangerouslySetInnerHTML\":{\"__html\":\"$96\"}}]\n4d:[\"$\",\"p\",\"15\",{\"children\":[\"The query planner couldn't do any partition pruning because we couldn't filter by \",[\"$\",\"code\",\"1\",{\"children\":\"created_at\"}],\". Partition pruning works by only searching partitions that can contain records of interest, but since our records of interest could have been created on any day, all partitions had to be searched. The scanning of every partition led to unacceptably high CPU, so we ruled this strategy out.\"]}]\n4e:[\"$\",\"$L92\",\"16\",{\"level\":3,\"id\":\"strategy-2-partition-based-on-root_story_id\",\"children\":[\"Strategy 2: Partition based on \",[\"$\",\"code\",\"1\",{\"children\":\"root_story_id\"}]]}]\n4f:[\"$\",\"p\",\"17\",{\"children\":[\"In our app, each of these \",[\"$\",\"code\",\"1\",{\"children\":\"event_payloads\"}],\" gets created within \",[\"$\",\"$L3a\",\"3\",{\"to\":\"https://www.tines.com/docs/stories/\",\"children\":[\"a “story”\"]}],\". It’s a one-to-many relationship, with each story having many \",[\"$\",\"code\",\"5\",{\"children\":\"event_payloads\"}],\", but each \",[\"$\",\"code\",\"7\",{\"children\":\"event_payload\"}],\" belonging to only one story, which can be identified by its \",[\"$\",\"code\",\"9\",{\"children\":\"root_story_id\"}],\". The idea with this strategy was to have a fixed number of partitions and use \",[\"$\",\"$L3a\",\"11\",{\"to\":\"https://www.postgresql.org/docs/current/ddl-partitioning.html#DDL-PARTITIONING-OVERVIEW-HASH\",\"children\":[\"PostgreSQL’s hash-based partitioning\"]}],\".\"]}]\n50:[\"$\",\"p\",\"18\",{\"children\":[\"We chose 16 tables, and the creation of these tables looked like this:\"]}]\n97:T2f94,\u003cpre class=\"shiki shiki-themes tines-light tines-dark\" style=\"--shiki-light:#2e2d36;--shiki-dark:#f8f4f0;--shiki-light-bg:#00000000;--shiki-dark-bg:#00000000\" tabindex=\"0\"\u003e\u003ccode\u003e\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e def\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e self\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ecreate_partitioned_tables\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e # \u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eCreate\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e the\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e parent\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e table\u003c/span\u003e\u003cspan style=\"--shiki-light:#A54B7A;--shiki-dark:#F486B8\"\u003e with\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e first\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e-\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003elevel\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e partitioning\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e on\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e root_story_id\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e sql\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e \u0026#x3C;\u0026#x3C;~\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eSQL\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e CREATE\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e TABLE\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e IF\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NOT\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e EXISTS\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e event_payloads\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e id\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e BIGSERIAL\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NOT\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NULL\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e key\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e CHARACTER\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e VARYING\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NOT\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NULL\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e output\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e JSON\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e tenant_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e BIGINT\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NOT\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NULL\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e root_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e BIGINT\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NOT\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NULL\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e created_at\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e TIMESTAMP\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e WITHOUT\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e TIME\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e ZONE\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NOT\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NULL\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e updated_at\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e TIMESTAMP\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e WITHOUT\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e TIME\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e ZONE\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NOT\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NULL\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e PRIMARY\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e KEY\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eroot_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e id\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e ) \u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ePARTITION\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e BY\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e HASH\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eroot_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e;\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e SQL\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e # \u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eCreate\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 16\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e partitions\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e for\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e partitioning\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e by\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e root_story_id\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0..15\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eeach\u003c/span\u003e\u003cspan style=\"--shiki-light:#A54B7A;--shiki-dark:#F486B8\"\u003e do\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e |\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ei\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e|\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e sql\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e +=\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e \u0026#x3C;\u0026#x3C;~\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eSQL\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e CREATE\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e TABLE\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e#\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e{\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ei\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e}\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e PARTITION\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e OF\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e FOR\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e VALUES\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e WITH\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003emodulus\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 16\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e remainder\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e #\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e{\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ei\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e}\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e;\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e SQL\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e end\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e sql\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e +=\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e \u0026#x3C;\u0026#x3C;~\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eSQL\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e CREATE\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e INDEX\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e IF\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NOT\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e EXISTS\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e index_event_payloads_on_tenant_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e ON\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e event_payloads\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e(\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003etenant_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e;\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e SQL\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e ActiveRecord\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eBase\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003econnection\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003eexecute\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e(\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003esql\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e end\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e51:[\"$\",\"div\",\"19\",{\"dangerouslySetInnerHTML\":{\"__html\":\"$97\"}}]\n52:[\"$\",\"p\",\"20\",{\"children\":[\"After PostgreSQL applied its own hash function to the \",[\"$\",\"code\",\"1\",{\"children\":\"root_story_id\"}],\", the hashed value would determine where the \",[\"$\",\"code\",\"3\",{\"children\":\"event_payloads\"}],\" for that story would be stored. For example, if the hashed value for a \",[\"$\",\"code\",\"5\",{\"children\":\"root_story_id\"}],\", modulo 16, was 2, records for that story would be stored in \",[\"$\",\"code\",\"7\",{\"children\":\"event_payloads_2\"}],\". While it made sense to have all of the data for a story in the same partition, this would create the “hot partitions” we were trying to avoid. A few busy stories creating a lot of \",[\"$\",\"code\",\"9\",{\"children\":\"event_payloads\"}],\" would disproportionately ingest data into their respective partitions, and the size of those tables would grow much faster relative to other tables getting populated by less busy stories. We passed on this strategy in the interest of more even data distribution.\"]}]\n53:[\"$\",\"$L92\",\"21\",{\"level\":3,\"id\":\"strategy-3-partition-based-on-id-with-an-index-on-root_story_id\",\"children\":[\"Strategy 3: Partition based on \",[\"$\",\"code\",\"1\",{\"children\":\"id\"}],\", with an index on \",[\"$\",\"code\",\"3\",{\"children\":\"root_story_id\"}]]}]\n54:[\"$\",\"p\",\"22\",{\"children\":[\"This approach used the same hash-based partitioning technique as described in Strategy 2, but instead of hashing the \",[\"$\",\"code\",\"1\",{\"children\":\"root_story_id\"}],\", we hashed the \",[\"$\",\"code\",\"3\",{\"children\":\"id\"}],\" of the \",[\"$\",\"code\",\"5\",{\"children\":\"event_payload\"}],\" itself. The index on \",[\"$\",\"code\",\"7\",{\"children\":\"root_story_id\"}],\" would come in handy because anywhere we query for events in our app, we know what story we are interested in, so we could use a \",[\"$\",\"code\",\"9\",{\"children\":\"WHERE\"}],\" clause to filter for a certain \",[\"$\",\"code\",\"11\",{\"children\":\"root_story_id\"}],\".\"]}]\n98:T2422,\u003cpre class=\"shiki shiki-themes tines-light tines-dark\" style=\"--shiki-light:#2e2d36;--shiki-dark:#f8f4f0;--shiki-light-bg:#00000000;--shiki-dark-bg:#00000000\" tabindex=\"0\"\u003e\u003ccode\u003e\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eCREATE\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e TABLE\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e event_payloads\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e id\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e bigserial\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e key\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e text\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NOT\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NULL\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e output\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e jsonb\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e created_at\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e timestamp\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NOT\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NULL\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e updated_at\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e timestamp\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NOT\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NULL\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e root_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e bigint\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NOT\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NULL\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e PRIMARY\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e KEY\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eid\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e root_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) \u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ePARTITION\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e BY\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e HASH\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eid\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e;\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eCREATE\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e TABLE\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_0\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e PARTITION\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e OF\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e FOR\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e VALUES\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e WITH\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003emodulus\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 4\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e remainder\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 0\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e;\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eCREATE\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e TABLE\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_1\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e PARTITION\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e OF\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e FOR\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e VALUES\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e WITH\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003emodulus\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 4\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e remainder\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e;\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eCREATE\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e TABLE\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_2\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e PARTITION\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e OF\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e FOR\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e VALUES\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e WITH\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003emodulus\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 4\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e remainder\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 2\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e;\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eCREATE\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e TABLE\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_3\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e PARTITION\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e OF\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e FOR\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e VALUES\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e WITH\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003emodulus\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 4\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e remainder\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 3\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e;\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eCREATE\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e INDEX\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e idx_event_payloads_root_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e ON\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e event_payloads\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e(\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eroot_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e;\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e55:[\"$\",\"div\",\"23\",{\"dangerouslySetInnerHTML\":{\"__html\":\"$98\"}}]\n56:[\"$\",\"p\",\"24\",{\"children\":[\"This approach ensured even data distribution because where an \",[\"$\",\"code\",\"1\",{\"children\":\"event_payload\"}],\" ended up wasn’t dependent on the context it was created in at all. Therefore, the “hot partition” problem was eliminated.\"]}]\n57:[\"$\",\"p\",\"25\",{\"children\":[\"Point queries searching for just one, or multiple, specific \",[\"$\",\"code\",\"1\",{\"children\":\"event_payload(s)\"}],\" by \",[\"$\",\"code\",\"3\",{\"children\":\"id(s)\"}],\" were extremely efficient, immediately searching the partition containing the \",[\"$\",\"code\",\"5\",{\"children\":\"event_payload(s)\"}],\" in question:\"]}]\n99:T1524,\u003cpre class=\"shiki shiki-themes tines-light tines-dark\" style=\"--shiki-light:#2e2d36;--shiki-dark:#f8f4f0;--shiki-light-bg:#00000000;--shiki-dark-bg:#00000000\" tabindex=\"0\"\u003e\u003ccode\u003e\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eEXPLAIN\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e ANALYZE\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eSELECT\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e *\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e FROM\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eWHERE\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 1234\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e AND\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e root_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 100\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e;\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eIndex\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Scan\u003c/span\u003e\u003cspan style=\"--shiki-light:#A54B7A;--shiki-dark:#F486B8\"\u003e using\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_2_pkey\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e on event_payloads_2 event_payloads (cost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.28\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.8\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e30\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e64\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.016\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.0\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e017\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Cond\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e ((\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eid\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 1234\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) \u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003eAND\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eroot_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 100\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e))\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ePlanning\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 0.340\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e ms\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eExecution\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 0.039\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e ms\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e58:[\"$\",\"div\",\"26\",{\"dangerouslySetInnerHTML\":{\"__html\":\"$99\"}}]\n59:[\"$\",\"p\",\"27\",{\"children\":[\"Querying for all \",[\"$\",\"code\",\"1\",{\"children\":\"event_payloads\"}],\" in a story forced a scan of all partitions, but the index on \",[\"$\",\"code\",\"3\",{\"children\":\"root_story_id\"}],\" was used effectively:\"]}]\n9a:T3dc6,\u003cpre class=\"shiki shiki-themes tines-light tines-dark\" style=\"--shiki-light:#2e2d36;--shiki-dark:#f8f4f0;--shiki-light-bg:#00000000;--shiki-dark-bg:#00000000\" tabindex=\"0\"\u003e\u003ccode\u003e\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eEXPLAIN\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e ANALYZE\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eSELECT\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e *\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e FROM\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eWHERE\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e root_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 100\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e;\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003eAppend\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ecost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.15\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.66\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e11\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1000\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e64\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.014\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.0\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e218\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1000\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Scan\u003c/span\u003e\u003cspan style=\"--shiki-light:#A54B7A;--shiki-dark:#F486B8\"\u003e using\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_0_root_story_id_idx\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e on event_payloads_0 event_payloads_1 (cost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.15\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.14\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e32\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e238\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e64\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.013\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.0\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e045\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e238\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Cond\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eroot_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 100\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Scan\u003c/span\u003e\u003cspan style=\"--shiki-light:#A54B7A;--shiki-dark:#F486B8\"\u003e using\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_1_root_story_id_idx\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e on event_payloads_1 event_payloads_2 (cost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.15\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.15\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e82\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e267\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e64\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.008\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.0\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e042\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e267\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Cond\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eroot_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 100\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Scan\u003c/span\u003e\u003cspan style=\"--shiki-light:#A54B7A;--shiki-dark:#F486B8\"\u003e using\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_2_root_story_id_idx\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e on event_payloads_2 event_payloads_3 (cost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.15\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.15\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e63\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e256\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e64\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.007\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.0\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e039\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e256\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Cond\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eroot_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 100\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Scan\u003c/span\u003e\u003cspan style=\"--shiki-light:#A54B7A;--shiki-dark:#F486B8\"\u003e using\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_3_root_story_id_idx\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e on event_payloads_3 event_payloads_4 (cost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.15\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.15\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e34\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e239\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e64\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.007\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.0\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e035\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e239\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Cond\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eroot_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 100\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ePlanning\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 0.409\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e ms\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eExecution\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 0.284\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e ms\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e5a:[\"$\",\"div\",\"28\",{\"dangerouslySetInnerHTML\":{\"__html\":\"$9a\"}}]\n5b:[\"$\",\"p\",\"29\",{\"children\":[\"However, range queries, particularly ones used for expiring records based on \",[\"$\",\"code\",\"1\",{\"children\":\"created_at\"}],\" were inefficient, so we decided to pass on this approach.\"]}]\n5c:[\"$\",\"$L92\",\"30\",{\"level\":3,\"id\":\"strategy-4-two-level-partitioning-by-root_story_id-and-id\",\"children\":[\"Strategy 4: Two-level partitioning by \",[\"$\",\"code\",\"1\",{\"children\":\"root_story_id\"}],\" and \",[\"$\",\"code\",\"3\",{\"children\":\"id\"}]]}]\n5d:[\"$\",\"p\",\"31\",{\"children\":[\"The idea with this approach was to strike a balance between optimal data distribution and efficient queries. The first level of partitions hashed by \",[\"$\",\"code\",\"1\",{\"children\":\"root_story_id\"}],\" as described in Strategy 2, but within each of those partitions, we introduced a second level of partitions, hashed by the \",[\"$\",\"code\",\"3\",{\"children\":\"id\"}],\" of the record itself as described in Strategy 3. Therefore, we had 128 partitions created like so:\"]}]\n9b:T45bc,\u003cpre class=\"shiki shiki-themes tines-light tines-dark\" style=\"--shiki-light:#2e2d36;--shiki-dark:#f8f4f0;--shiki-light-bg:#00000000;--shiki-dark-bg:#00000000\" tabindex=\"0\"\u003e\u003ccode\u003e\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e def\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e self\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ecreate_partitioned_tables\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e # \u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eCreate\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e the\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e parent\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e table\u003c/span\u003e\u003cspan style=\"--shiki-light:#A54B7A;--shiki-dark:#F486B8\"\u003e with\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e first\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e-\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003elevel\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e partitioning\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e on\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e root_story_id\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e sql\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e \u0026#x3C;\u0026#x3C;~\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eSQL\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e CREATE\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e TABLE\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e IF\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NOT\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e EXISTS\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e event_payloads\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e id\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e BIGSERIAL\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NOT\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NULL\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e key\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e CHARACTER\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e VARYING\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NOT\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NULL\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e output\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e JSON\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e tenant_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e BIGINT\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NOT\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NULL\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e root_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e BIGINT\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NOT\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NULL\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e created_at\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e TIMESTAMP\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e WITHOUT\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e TIME\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e ZONE\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NOT\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NULL\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e updated_at\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e TIMESTAMP\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e WITHOUT\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e TIME\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e ZONE\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NOT\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NULL\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e PRIMARY\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e KEY\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eroot_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e id\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e ) \u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ePARTITION\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e BY\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e HASH\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eroot_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e;\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e SQL\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e # \u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eCreate\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 16\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e first\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e-\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003elevel\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e partitions\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e for\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e partitioning\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e by\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e root_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e each\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e sub\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e-\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003epartitioned\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e by\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e id\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0..15\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eeach\u003c/span\u003e\u003cspan style=\"--shiki-light:#A54B7A;--shiki-dark:#F486B8\"\u003e do\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e |\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ei\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e|\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e sql\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e +=\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e \u0026#x3C;\u0026#x3C;~\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eSQL\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e CREATE\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e TABLE\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e#\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e{\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ei\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e}\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e PARTITION\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e OF\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e FOR\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e VALUES\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e WITH\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003emodulus\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 16\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e remainder\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e #\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e{\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ei\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e}\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e PARTITION\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e BY\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e HASH\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eid\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e;\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e SQL\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e # \u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eCreate\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 8\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e sub\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e-\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003epartitions\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e for\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e each\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e first\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e-\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003elevel\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e partition\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e partitioning\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e by\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e id\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0..7\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eeach\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e {\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e |\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ej\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e|\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e sql\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e +=\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e \u0026#x3C;\u0026#x3C;~\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eSQL\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e }\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e CREATE\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e TABLE\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e#\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e{\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ei\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e}\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e_\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e#\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e{\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ej\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e}\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e PARTITION\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e OF\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e#\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e{\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ei\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e FOR\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e VALUES\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e WITH\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003emodulus\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 8\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e remainder\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e #\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e{\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ej\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e}\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e;\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e SQL\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e end\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e sql\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e +=\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e \u0026#x3C;\u0026#x3C;~\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eSQL\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e CREATE\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e INDEX\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e IF\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e NOT\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e EXISTS\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e index_event_payloads_on_tenant_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e ON\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e event_payloads\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e(\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003etenant_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e;\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e SQL\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e ActiveRecord\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eBase\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003econnection\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003eexecute\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e(\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003esql\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e end\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e5e:[\"$\",\"div\",\"32\",{\"dangerouslySetInnerHTML\":{\"__html\":\"$9b\"}}]\n5f:[\"$\",\"p\",\"33\",{\"children\":[\"This gave us the benefit of not having to scan all partitions when looking for all records belonging to a story (only 8/128 as opposed to 4/4), but also distributed the \",[\"$\",\"code\",\"1\",{\"children\":\"event_payloads\"}],\" for any one story across eight partitions, mitigating the “hot partition” problem.\"]}]\n60:[\"$\",\"p\",\"34\",{\"children\":[\"Point queries searching for specific \",[\"$\",\"code\",\"1\",{\"children\":\"id(s)\"}],\" using the \",[\"$\",\"code\",\"3\",{\"children\":\"root_story_id\"}],\" were extremely efficient, searching only the partitions that contained the records we were looking for:\"]}]\n9c:T2f52,\u003cpre class=\"shiki shiki-themes tines-light tines-dark\" style=\"--shiki-light:#2e2d36;--shiki-dark:#f8f4f0;--shiki-light-bg:#00000000;--shiki-dark-bg:#00000000\" tabindex=\"0\"\u003e\u003ccode\u003e\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eSELECT\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e *\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e FROM\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eWHERE\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e id\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e IN\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e54472978\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 177425082\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) \u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eAND\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e root_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 238\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e;\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e Append\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ecost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.42\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.25\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e77\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e2\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e479\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.027\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.0\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e051\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e2\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Scan\u003c/span\u003e\u003cspan style=\"--shiki-light:#A54B7A;--shiki-dark:#F486B8\"\u003e using\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_0_2_pkey\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e on event_payloads_0_2 event_payloads_1 (cost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.42\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.12\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e88\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e480\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.026\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.0\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e032\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Cond\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e ((\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eroot_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 238\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) \u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003eAND\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eid\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e ANY\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e'\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e{54472978,177425082}\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e'\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e::\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ebigint\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e[])))\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Scan\u003c/span\u003e\u003cspan style=\"--shiki-light:#A54B7A;--shiki-dark:#F486B8\"\u003e using\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_0_5_pkey\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e on event_payloads_0_5 event_payloads_2 (cost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.42\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.12\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e88\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e478\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.017\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.0\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e017\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Cond\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e ((\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eroot_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 238\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) \u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003eAND\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eid\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e ANY\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e'\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e{54472978,177425082}\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e'\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e::\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ebigint\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e[])))\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Planning\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 0.306\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e ms\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Execution\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 0.098\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e ms\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e(\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e7\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e61:[\"$\",\"div\",\"35\",{\"dangerouslySetInnerHTML\":{\"__html\":\"$9c\"}}]\n62:[\"$\",\"p\",\"36\",{\"children\":[\"Queries looking for all records belonging to a story were also efficient, because partition pruning made it so that only eight top-level partitions had to be searched:\"]}]\n9d:T7b67,\u003cpre class=\"shiki shiki-themes tines-light tines-dark\" style=\"--shiki-light:#2e2d36;--shiki-dark:#f8f4f0;--shiki-light-bg:#00000000;--shiki-dark-bg:#00000000\" tabindex=\"0\"\u003e\u003ccode\u003e\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eSELECT\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e *\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e FROM\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eWHERE\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e root_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 238\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e;\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e Append\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ecost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.00\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.469871\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e09\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e2298420\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e480\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.006\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.4744\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e669\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e2415908\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Seq\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Scan\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e on\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_0_0\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e event_payloads_1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ecost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.00\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.57293\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e60\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e287234\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e483\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.005\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.491\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e770\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e301253\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Filter\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eroot_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 238\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Removed\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e by\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Filter\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 304997\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Seq\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Scan\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e on\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_0_1\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e event_payloads_2\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ecost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.00\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.57213\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e86\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e286518\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e483\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.164\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.560\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e221\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e301676\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Filter\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eroot_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 238\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Removed\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e by\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Filter\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 304120\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Seq\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Scan\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e on\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_0_2\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e event_payloads_3\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ecost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.00\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.57381\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e71\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e290054\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e480\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.175\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.552\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e702\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e302427\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Filter\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eroot_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 238\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Removed\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e by\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Filter\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 305111\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Seq\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Scan\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e on\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_0_3\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e event_payloads_4\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ecost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.00\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.57296\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e16\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e285988\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e478\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.153\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.581\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e496\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e301111\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Filter\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eroot_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 238\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Removed\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e by\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Filter\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 303883\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Seq\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Scan\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e on\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_0_4\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e event_payloads_5\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ecost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.00\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.57296\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e96\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e289212\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e480\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.178\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.573\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e105\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e302489\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Filter\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eroot_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 238\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Removed\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e by\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Filter\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 304290\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Seq\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Scan\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e on\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_0_5\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e event_payloads_6\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ecost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.00\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.57354\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e15\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e284877\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e478\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.159\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.571\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e096\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e302068\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Filter\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eroot_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 238\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Removed\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e by\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Filter\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 305836\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Seq\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Scan\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e on\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_0_6\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e event_payloads_7\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ecost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.00\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.57265\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e78\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e284224\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e480\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.149\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.595\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e128\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e302069\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Filter\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eroot_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 238\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Removed\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e by\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Filter\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 304993\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Seq\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Scan\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e on\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_0_7\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e event_payloads_8\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ecost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.00\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.57276\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e76\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e290313\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e479\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.173\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.626\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e301\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e302815\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Filter\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eroot_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 238\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Removed\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e by\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Filter\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 303950\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Planning\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 2.565\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e ms\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Execution\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 4848.421\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e ms\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e(\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e27\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e63:[\"$\",\"div\",\"37\",{\"dangerouslySetInnerHTML\":{\"__html\":\"$9d\"}}]\n64:[\"$\",\"p\",\"38\",{\"children\":[\"We concluded that this strategy provided the benefits that we found with the other strategies, while mitigating the shortcomings. It would scale well on both our multi-tenant clusters, where query efficiency is key, and our single-tenant clusters, where we risked a few busy stories creating “hot partitions”. In order to solve the problem of inefficient range queries, we eliminated the need to filter by \",[\"$\",\"code\",\"1\",{\"children\":\"created_at\"}],\" at all when cleaning up \",[\"$\",\"code\",\"3\",{\"children\":\"event_payload\"}],\" records. Instead of expiring \",[\"$\",\"code\",\"5\",{\"children\":\"event_payloads\"}],\" after their associated \",[\"$\",\"code\",\"7\",{\"children\":\"event\"}],\" was deleted, we pivoted towards deleting them inline with their \",[\"$\",\"code\",\"9\",{\"children\":\"event\"}],\" like so:\"]}]\n9e:T19bf,\u003cpre class=\"shiki shiki-themes tines-light tines-dark\" style=\"--shiki-light:#2e2d36;--shiki-dark:#f8f4f0;--shiki-light-bg:#00000000;--shiki-dark-bg:#00000000\" tabindex=\"0\"\u003e\u003ccode\u003e\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e query\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e \u0026#x3C;\u0026#x3C;~\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eSQL\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e DELETE\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e FROM\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e events\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e WHERE\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e ANY\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e(\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eARRAY\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e[:\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eids_to_delete\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e])\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e RETURNING\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payload_id\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e SQL\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e sanitized_query\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e ActiveRecord\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eBase\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003esanitize_sql_array\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e([\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003equery\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e {\u003c/span\u003e\u003cspan style=\"--shiki-light:#6956A8;--shiki-dark:#A990F5\"\u003e ids_to_delete\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e batch\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003emap\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e(\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e\u0026#x26;\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eid\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) \u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e}\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e])\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e result\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e ApplicationRecord\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003eexecute_write_query\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e(\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003esanitized_query\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eto_a\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payload_ids\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e result\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003efilter_map\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e {\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e |\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003erow\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e|\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e row\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e[\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003eevent_payload_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e] \u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#A54B7A;--shiki-dark:#F486B8\"\u003e if\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payload_ids\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eany\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e?\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e EventPayload\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003edelete_by_ids\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e(\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eevent_payload_ids\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e story\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003elive_root_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e end\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e65:[\"$\",\"div\",\"39\",{\"dangerouslySetInnerHTML\":{\"__html\":\"$9e\"}}]\n66:[\"$\",\"$L92\",\"40\",{\"level\":2,\"id\":\"the-journey\",\"children\":[\"The journey\"]}]\n67:[\"$\",\"p\",\"41\",{\"children\":[\"Deciding on a partitioning strategy was just the beginning of this project. Next, we set up the partitions as described in Strategy 4 on a test cluster. With the partitions in place, our general approach was to deploy code that relied on the \",[\"$\",\"code\",\"1\",{\"children\":\"event_payloads\"}],\" table everywhere we currently used the \",[\"$\",\"code\",\"3\",{\"children\":\"output_payloads\"}],\" table, load test, analyze performance, make adjustments, repeat. Load testing meant running a few busy stories on the test cluster, generating tons of writes and reads on the table. We tracked the performance in AWS Aurora/RDS console, identifying queries that caused high database load. We used PostgreSQL’s \",[\"$\",\"code\",\"5\",{\"children\":\"EXPLAIN ANALYZE\"}],\" tool in order to see how PostgreSQL was planning and executing resource intensive queries. From there, we could look for ways to optimize.\"]}]\n68:[\"$\",\"p\",\"42\",{\"children\":[\"One thing that became apparent very early was that every query would have to have a \",[\"$\",\"code\",\"1\",{\"children\":\"WHERE\"}],\" clause on \",[\"$\",\"code\",\"3\",{\"children\":\"root_story_id\"}],\" in order to force index scans. \"]}]\n69:[\"$\",\"p\",\"43\",{\"children\":[\"For example:\"]}]\n6a:[\"$\",\"figure\",\"44\",{\"className\":\"ImageBlock-module-scss-module__0Ef4dq__imageBlock\",\"children\":[[\"$\",\"img\",null,{\"src\":\"https://www.datocms-assets.com/55802/1768315778-screenshot-2025-04-14-at-3-07-20-pm.png?auto=format%2Ccompress\u0026fit=max\u0026q=90\u0026w=2000\u0026auto=format,compress\u0026q=90\u0026w=2000\u0026fit=max\",\"alt\":\"\",\"width\":1832,\"height\":750,\"loading\":\"lazy\"}],null]}]\n6b:[\"$\",\"figure\",\"45\",{\"className\":\"ImageBlock-module-scss-module__0Ef4dq__imageBlock\",\"children\":[[\"$\",\"img\",null,{\"src\":\"https://www.datocms-assets.com/55802/1768315778-screenshot-2025-04-14-at-4-11-38-pm.png?auto=format%2Ccompress\u0026fit=max\u0026q=90\u0026w=2000\u0026auto=format,compress\u0026q=90\u0026w=2000\u0026fit=max\",\"alt\":\"\",\"width\":477,\"height\":130,\"loading\":\"lazy\"}],null]}]\n9f:T9aa5,\u003cpre class=\"shiki shiki-themes tines-light tines-dark\" style=\"--shiki-light:#2e2d36;--shiki-dark:#f8f4f0;--shiki-light-bg:#00000000;--shiki-dark-bg:#00000000\" tabindex=\"0\"\u003e\u003ccode\u003e\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eEXPLAIN\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e ANALYZE\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eSELECT\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e \"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003eevent_payloads\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e*\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eFROM\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e \"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003eevent_payloads\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eWHERE\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e \"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003eevent_payloads\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003etenant_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e AND\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e \"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003eevent_payloads\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003eid\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 14\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eLIMIT\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 1\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e;\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e Limit\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ecost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.42\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.12046\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e56\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e587\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e95.242\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.95\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e248\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e Append\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ecost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.42\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.192738\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e51\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e16\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e587\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e95.241\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.95\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e247\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Scan\u003c/span\u003e\u003cspan style=\"--shiki-light:#A54B7A;--shiki-dark:#F486B8\"\u003e using\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_0_0_pkey\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e on event_payloads_0_0 event_payloads_1 (cost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.42\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.17027\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e20\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e483\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e11.138\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.11\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e138\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Cond\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eid\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 14\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Filter\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003etenant_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Scan\u003c/span\u003e\u003cspan style=\"--shiki-light:#A54B7A;--shiki-dark:#F486B8\"\u003e using\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_1_0_pkey\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e on event_payloads_1_0 event_payloads_2 (cost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.41\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.9689\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e27\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e762\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.403\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.0\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e403\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Cond\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eid\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 14\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Filter\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003etenant_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Scan\u003c/span\u003e\u003cspan style=\"--shiki-light:#A54B7A;--shiki-dark:#F486B8\"\u003e using\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_2_0_pkey\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e on event_payloads_2_0 event_payloads_3 (cost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.42\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.7860\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e12\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e604\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1.350\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.1\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e350\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Cond\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eid\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 14\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Filter\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003etenant_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Scan\u003c/span\u003e\u003cspan style=\"--shiki-light:#A54B7A;--shiki-dark:#F486B8\"\u003e using\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_3_0_pkey\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e on event_payloads_3_0 event_payloads_4 (cost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.41\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.5262\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e14\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e564\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.766\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.0\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e766\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Cond\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eid\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 14\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Filter\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003etenant_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Scan\u003c/span\u003e\u003cspan style=\"--shiki-light:#A54B7A;--shiki-dark:#F486B8\"\u003e using\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_4_0_pkey\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e on event_payloads_4_0 event_payloads_5 (cost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.41\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.4020\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e52\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e333\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.257\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.0\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e257\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Cond\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eid\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 14\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Filter\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003etenant_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Scan\u003c/span\u003e\u003cspan style=\"--shiki-light:#A54B7A;--shiki-dark:#F486B8\"\u003e using\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_5_0_pkey\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e on event_payloads_5_0 event_payloads_6 (cost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.43\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.65567\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e71\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e453\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e42.546\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.42\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e546\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Cond\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eid\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 14\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Filter\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003etenant_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Scan\u003c/span\u003e\u003cspan style=\"--shiki-light:#A54B7A;--shiki-dark:#F486B8\"\u003e using\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_6_0_pkey\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e on event_payloads_6_0 event_payloads_7 (cost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.42\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.6771\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e96\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e572\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e2.209\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.2\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e210\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Cond\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eid\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 14\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Filter\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003etenant_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Scan\u003c/span\u003e\u003cspan style=\"--shiki-light:#A54B7A;--shiki-dark:#F486B8\"\u003e using\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_7_0_pkey\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e on event_payloads_7_0 event_payloads_8 (cost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.42\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.15250\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e86\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1204\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e7.273\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.7\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e273\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Cond\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eid\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 14\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Filter\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003etenant_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Scan\u003c/span\u003e\u003cspan style=\"--shiki-light:#A54B7A;--shiki-dark:#F486B8\"\u003e using\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_8_0_pkey\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e on event_payloads_8_0 event_payloads_9 (cost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.41\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.4228\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e43\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e485\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1.094\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.1\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e094\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Cond\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eid\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 14\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Filter\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003etenant_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e ...\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e ...\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Planning\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 0.766\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e ms\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Execution\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 95.379\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e ms\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e(\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e52\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e6c:[\"$\",\"div\",\"46\",{\"dangerouslySetInnerHTML\":{\"__html\":\"$9f\"}}]\n6d:[\"$\",\"p\",\"47\",{\"children\":[\"Vs. also filtering for \",[\"$\",\"code\",\"1\",{\"children\":\"root_story_id\"}],\":\"]}]\na0:T28d7,\u003cpre class=\"shiki shiki-themes tines-light tines-dark\" style=\"--shiki-light:#2e2d36;--shiki-dark:#f8f4f0;--shiki-light-bg:#00000000;--shiki-dark-bg:#00000000\" tabindex=\"0\"\u003e\u003ccode\u003e\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eEXPLAIN\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e ANALYZE\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eSELECT\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e \"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003eevent_payloads\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e*\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eFROM\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e \"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003eevent_payloads\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eWHERE\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e \"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003eevent_payloads\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003etenant_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e AND\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e \"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003eevent_payloads\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003eid\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 14\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e AND\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e \"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003eevent_payloads\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003eroot_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 5779\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eLIMIT\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 1\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e;\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e Limit\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ecost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.42\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.8\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e44\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e628\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.020\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.0\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e020\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e -\u003e\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Scan\u003c/span\u003e\u003cspan style=\"--shiki-light:#A54B7A;--shiki-dark:#F486B8\"\u003e using\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payloads_15_0_pkey\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e on event_payloads_15_0 event_payloads (cost\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.42\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.8\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e44\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e width\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e628\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eactual\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e0.019\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e.0\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e019\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e loops\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Index\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Cond\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e ((\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eroot_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 5779\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) \u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003eAND\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eid\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 14\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e))\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Filter\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e (\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003etenant_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 1\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Planning\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 0.168\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e ms\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e Execution\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e Time\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 0.041\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e ms\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e(\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e6\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e rows\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e6e:[\"$\",\"div\",\"48\",{\"dangerouslySetInnerHTML\":{\"__html\":\"$a0\"}}]\n6f:[\"$\",\"p\",\"49\",{\"children\":[\"Here is another example where you can see the difference in database load by adding a filter on \",[\"$\",\"code\",\"1\",{\"children\":\"root_story_id\"}],\", all other things kept the same:\"]}]\n70:[\"$\",\"figure\",\"50\",{\"className\":\"ImageBlock-module-scss-module__0Ef4dq__imageBlock\",\"children\":[[\"$\",\"img\",null,{\"src\":\"https://www.datocms-assets.com/55802/1768315850-screenshot-2025-04-15-at-9-49-33-am.png?auto=format%2Ccompress\u0026fit=max\u0026q=90\u0026w=2000\u0026auto=format,compress\u0026q=90\u0026w=2000\u0026fit=max\",\"alt\":\"\",\"width\":1319,\"height\":271,\"loading\":\"lazy\"}],null]}]\n71:[\"$\",\"figure\",\"51\",{\"className\":\"ImageBlock-module-scss-module__0Ef4dq__imageBlock\",\"children\":[[\"$\",\"img\",null,{\"src\":\"https://www.datocms-assets.com/55802/1768315841-screenshot-2025-04-15-at-11-05-37-am.png?auto=format%2Ccompress\u0026fit=max\u0026q=90\u0026w=2000\u0026auto=format,compress\u0026q=90\u0026w=2000\u0026fit=max\",\"alt\":\"\",\"width\":2184,\"height\":406,\"loading\":\"lazy\"}],null]}]\n72:[\"$\",\"p\",\"52\",{\"children\":[\"Filtering for \",[\"$\",\"code\",\"1\",{\"children\":\"root_story_id\"}],\" helped to optimize \",[\"$\",\"code\",\"3\",{\"children\":\"SELECT\"}],\" queries, but they still didn’t perform as well as equivalent queries to the old table. A goal of this project was no regression from current behavior or performance, so we had some problem solving to do.\"]}]\n73:[\"$\",\"p\",\"53\",{\"children\":[\"The queries on the \",[\"$\",\"code\",\"1\",{\"children\":\"event_payloads\"}],\" table were still causing higher CPU, and were less efficient than on the \",[\"$\",\"code\",\"3\",{\"children\":\"output_payloads\"}],\" table. This was because of what happens in PostgreSQL when you query partitions through the parent table. PostgreSQL must perform catalog lookups, particularly using \",[\"$\",\"$L3a\",\"5\",{\"to\":\"https://www.postgresql.org/docs/current/catalog-pg-class.html\",\"children\":[\"pg_class\"]}],\" and \",[\"$\",\"$L3a\",\"7\",{\"to\":\"https://www.postgresql.org/docs/current/catalog-pg-inherits.html\",\"children\":[\"pg_inherits\"]}],\", and also perform its own hash calculation, to route each query to the correct partition. This results in significant overhead when you’re querying the table a lot, especially if you decide to use multi-level partitioning schemes like we did, where PostgreSQL must query the PostgreSQL catalog tables to identify the target partition. We do over 1 billion action runs a week in cloud, and this is one of the highest read code paths, so safe to say we’re querying this table a lot. For example, when we were doing something like:\"]}]\na1:Tc7b,\u003cpre class=\"shiki shiki-themes tines-light tines-dark\" style=\"--shiki-light:#2e2d36;--shiki-dark:#f8f4f0;--shiki-light-bg:#00000000;--shiki-dark-bg:#00000000\" tabindex=\"0\"\u003e\u003ccode\u003e\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eSELECT\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e \"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003eevent_payloads\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e*\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eFROM\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e \"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003eevent_payloads\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eWHERE\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e \"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003eevent_payloads\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003etenant_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e AND\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e \"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003eevent_payloads\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003eid\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 14\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e AND\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e \"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003eevent_payloads\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003eroot_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 5779\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e;\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e74:[\"$\",\"div\",\"54\",{\"dangerouslySetInnerHTML\":{\"__html\":\"$a1\"}}]\n75:[\"$\",\"p\",\"55\",{\"children\":[\"PostgresSQL had to do a catalog lookup to figure out which child partition of the \",[\"$\",\"code\",\"1\",{\"children\":\"event_payloads\"}],\" table that particular record belongs to. This catalog lookup added overhead, and made the query more CPU intensive (which also largely came from the hash calculation for the partition key) and slower, as opposed to querying a non-partitioned table.\"]}]\n76:[\"$\",\"p\",\"56\",{\"children\":[\"In order to mitigate this issue, we reverse engineered the PostgreSQL hash-based partitioning logic so that we could derive which partition an \",[\"$\",\"code\",\"1\",{\"children\":\"event_payload\"}],\" record would be in and query that partition directly. More specifically, this required replicating the logic of PostgreSQL’s \",[\"$\",\"$L3a\",\"3\",{\"to\":\"https://github.com/postgres/postgres/blob/master/src/backend/access/hash/hashfunc.c#L103-L113\",\"children\":[[\"$\",\"code\",\"0\",{\"children\":\"hashint8extended\"}]]}],\" function, which takes a value for the partition key, and a constant “seed” value defined by PostgreSQL in order to determine the integer that the key value hashes to. For example, if an \",[\"$\",\"code\",\"5\",{\"children\":\"event_payload\"}],\" had a \",[\"$\",\"code\",\"7\",{\"children\":\"root_story_id\"}],\" of \",[\"$\",\"code\",\"9\",{\"children\":\"63\"}],\", and an \",[\"$\",\"code\",\"11\",{\"children\":\"id\"}],\" of \",[\"$\",\"code\",\"13\",{\"children\":\"244\"}],\", we could use those two values to determine which of the first level partitions that \",[\"$\",\"code\",\"15\",{\"children\":\"root_story_id\"}],\" hashed to, and which second level partition that \",[\"$\",\"code\",\"17\",{\"children\":\"id\"}],\" hashed to. Therefore, we could build the name of the partition, something like \",[\"$\",\"code\",\"19\",{\"children\":\"event_payloads_11_1\"}],\". This method of querying the partitions directly was 20-40x faster than their equivalent query relying on PostgreSQL’s catalog lookup.\"]}]\n77:[\"$\",\"p\",\"57\",{\"children\":[\"Before reverse engineering PostgreSQL’s hash function:\"]}]\n78:[\"$\",\"figure\",\"58\",{\"className\":\"ImageBlock-module-scss-module__0Ef4dq__imageBlock\",\"children\":[[\"$\",\"img\",null,{\"src\":\"https://www.datocms-assets.com/55802/1768315942-screenshot-2025-04-21-at-10-38-31-am.png?auto=format%2Ccompress\u0026fit=max\u0026q=90\u0026w=2000\u0026auto=format,compress\u0026q=90\u0026w=2000\u0026fit=max\",\"alt\":\"\",\"width\":2588,\"height\":1140,\"loading\":\"lazy\"}],null]}]\n79:[\"$\",\"p\",\"59\",{\"children\":[\"Vs. the control (old \",[\"$\",\"code\",\"1\",{\"children\":\"output_payloads\"}],\" table):\"]}]\n7a:[\"$\",\"figure\",\"60\",{\"className\":\"ImageBlock-module-scss-module__0Ef4dq__imageBlock\",\"children\":[[\"$\",\"img\",null,{\"src\":\"https://www.datocms-assets.com/55802/1768315942-screenshot-2025-05-01-at-2-52-38-pm.png?auto=format%2Ccompress\u0026fit=max\u0026q=90\u0026w=2000\u0026auto=format,compress\u0026q=90\u0026w=2000\u0026fit=max\",\"alt\":\"\",\"width\":2632,\"height\":468,\"loading\":\"lazy\"}],null]}]\n7b:[\"$\",\"p\",\"61\",{\"children\":[\"Vs. after reverse engineering (notice no \",[\"$\",\"code\",\"1\",{\"children\":\"SELECT\"}],\"s on \",[\"$\",\"code\",\"3\",{\"children\":\"event_payloads\"}],\" generated enough load to be displayed anymore):\"]}]\n7c:[\"$\",\"figure\",\"62\",{\"className\":\"ImageBlock-module-scss-module__0Ef4dq__imageBlock\",\"children\":[[\"$\",\"img\",null,{\"src\":\"https://www.datocms-assets.com/55802/1768315942-screenshot-2025-05-02-at-10-43-16-am-1.png?auto=format%2Ccompress\u0026fit=max\u0026q=90\u0026w=2000\u0026auto=format,compress\u0026q=90\u0026w=2000\u0026fit=max\",\"alt\":\"\",\"width\":2398,\"height\":356,\"loading\":\"lazy\"}],null]}]\n7d:[\"$\",\"p\",\"63\",{\"children\":[\"In order to make use of our ability to determine which partition \",[\"$\",\"code\",\"1\",{\"children\":\"event_payloads\"}],\" would be stored in, we defined our own \",[\"$\",\"code\",\"3\",{\"children\":\"event_payload\"}],\" function to override the default rails \",[\"$\",\"code\",\"5\",{\"children\":\"event.event_payload\"}],\". Our function uses the \",[\"$\",\"code\",\"7\",{\"children\":\"event_payload_id\"}],\" of the \",[\"$\",\"code\",\"9\",{\"children\":\"event\"}],\" and our reverse engineered PostgreSQL hash function to query the \",[\"$\",\"code\",\"11\",{\"children\":\"event_payload\"}],\"’s partition for the record directly:\"]}]\na2:Te0c,\u003cpre class=\"shiki shiki-themes tines-light tines-dark\" style=\"--shiki-light:#2e2d36;--shiki-dark:#f8f4f0;--shiki-light-bg:#00000000;--shiki-dark-bg:#00000000\" tabindex=\"0\"\u003e\u003ccode\u003e\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e sig\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e {\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e returns\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e(\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eT\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003enilable\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e(\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eEventPayload\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)) \u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e def\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payload\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#A54B7A;--shiki-dark:#F486B8\"\u003e return\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e unless\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payload_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003epresent\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e?\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e \u0026#x26;\u0026#x26;\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e story\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003epresent\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e?\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e EventPayload\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003efrom_partition\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e(\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eT\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003emust\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e(\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003estory\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003elive_root_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e [\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eT\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003emust\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e(\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eevent_payload_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)])\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003efirst\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e end\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e7e:[\"$\",\"div\",\"64\",{\"dangerouslySetInnerHTML\":{\"__html\":\"$a2\"}}]\n7f:[\"$\",\"p\",\"65\",{\"children\":[\"This \",[\"$\",\"code\",\"1\",{\"children\":\"from_partition\"}],\" function uses the following helpers in order to derive the partition:\"]}]\na3:T2a9d,\u003cpre class=\"shiki shiki-themes tines-light tines-dark\" style=\"--shiki-light:#2e2d36;--shiki-dark:#f8f4f0;--shiki-light-bg:#00000000;--shiki-dark-bg:#00000000\" tabindex=\"0\"\u003e\u003ccode\u003e\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e sig\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e {\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e params\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e(\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eroot_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e: \u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eInteger\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003ereturns\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e(\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eString\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) \u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e def\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e self\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003eroot_story_partition_name\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e(\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eroot_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e root_story_partition\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e PgHashFunc\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003ecalculate_partition_index_bigint\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e(\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e value\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e: \u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eroot_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e num_partitions\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e: \u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eNUM_FIRST_LEVEL_PARTITIONS\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e )\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e [\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eTABLE_PREFIX\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e root_story_partition\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e]\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003ejoin\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e(\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e_\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e end\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e sig\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e {\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e params\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e(\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eroot_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e: \u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eInteger\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e ids\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e: \u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eT\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e::\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eArray\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e[\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eInteger\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e])\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003ereturns\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e(\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eString\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) \u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e def\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e self\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003epartition_name\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e(\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eroot_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e ids\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e [])\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e root_story_partition\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003e root_story_partition_name\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e(\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eroot_story_id\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) # \u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ethis\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e gets\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e us\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e something\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e like\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e \"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003eevent_payloads_0\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#A54B7A;--shiki-dark:#F486B8\"\u003e return\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e root_story_partition\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e if\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e ids\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003esize\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e !=\u003c/span\u003e\u003cspan style=\"--shiki-light:#A96C14;--shiki-dark:#F5A847\"\u003e 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payload_partition\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e =\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e PgHashFunc\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003ecalculate_partition_index_bigint\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e(\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e value\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e: \u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eids\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003efirst\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e num_partitions\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e: \u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eNUM_SECOND_LEVEL_PARTITIONS\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e )\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e [\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eroot_story_partition\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e,\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payload_partition\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e]\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#CB5D94;--shiki-dark:#FDA2CB\"\u003ejoin\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e(\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e_\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e) # \u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003ethen\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e this\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e gets\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e us\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e to\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e something\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e like\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e \"\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003eevent_payloads_0_0\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e end\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e80:[\"$\",\"div\",\"66\",{\"dangerouslySetInnerHTML\":{\"__html\":\"$a3\"}}]\n81:[\"$\",\"$L92\",\"67\",{\"level\":2,\"id\":\"rollout\",\"children\":[\"Rollout\"]}]\n82:[\"$\",\"p\",\"68\",{\"children\":[\"The phases of rollout for this project, all controlled by different feature flags, were:\"]}]\n83:[\"$\",\"ol\",\"69\",{\"children\":[[\"$\",\"li\",\"0\",{\"children\":[[\"$\",\"p\",\"0\",{\"children\":[\"Dual writes: writing to both the new table and the old table at the same time\"]}]]}],[\"$\",\"li\",\"1\",{\"children\":[[\"$\",\"p\",\"0\",{\"children\":[\"Verification: reading from the new table to verify data consistency between the old table and the new table, while still relying on the old table\"]}]]}],[\"$\",\"li\",\"2\",{\"children\":[[\"$\",\"p\",\"0\",{\"children\":[\"Reading from the new table primarily, with fall back to the old table when the new table didn’t return any data\"]}]]}]]}]\n84:[\"$\",\"$L92\",\"70\",{\"level\":3,\"id\":\"dual-writes\",\"children\":[\"Dual writes\"]}]\n85:[\"$\",\"p\",\"71\",{\"children\":[\"Dual writes was pretty straightforward to roll out. It required flipping on a feature flag and thereby starting to write equivalent records to both the old table and the new table for each event.\"]}]\n86:[\"$\",\"$L92\",\"72\",{\"level\":3,\"id\":\"verification\",\"children\":[\"Verification\"]}]\n87:[\"$\",\"p\",\"73\",{\"children\":[\"The dual reads (or shadow reads) phase of the rollout meant that we were also querying the new table everywhere we queried the old table. This was our time to verify that the new table was returning the same data as the old table, and could therefore be trusted as the primary read. In order to compare the data returned from the two tables, we used a Ruby library called \",[\"$\",\"$L3a\",\"1\",{\"to\":\"https://github.com/github/scientist\",\"children\":[\"Github scientist\"]}],\". This library is designed as an aid for refactoring critical code paths. With Github scientist, you can set up “experiments” where your application primarily uses the old method, while trying the new method. The library reports whether or not the two methods matched, which was data we could send to our monitoring system, Honeycomb. Github scientist also allows you to log any relevant metadata, which in our case were things like the \",[\"$\",\"code\",\"3\",{\"children\":\"event_id\"}],\", the \",[\"$\",\"code\",\"5\",{\"children\":\"event_payload_id\"}],\", and the \",[\"$\",\"code\",\"7\",{\"children\":\"output_payload_id\"}],\". That way, we could go into Rails console and debug mismatches by looking at the records. For this project, we were concerned with the \",[\"$\",\"code\",\"9\",{\"children\":\"output\"}],\" field of \",[\"$\",\"code\",\"11\",{\"children\":\"event_payload\"}],\" records matching the \",[\"$\",\"code\",\"13\",{\"children\":\"output\"}],\" field of their corresponding \",[\"$\",\"code\",\"15\",{\"children\":\"output_payload\"}],\" record for any given event. The \",[\"$\",\"code\",\"17\",{\"children\":\"output\"}],\" field contains the arbitrary JSON that forms the core content of an event, so we needed to be sure we were getting the right data.\"]}]\n88:[\"$\",\"p\",\"74\",{\"children\":[\"For the most part, the mismatches that we saw were expected. These were events created before we turned on dual writes, which wouldn't have an \",[\"$\",\"code\",\"1\",{\"children\":\"event_payload\"}],\" (i.e., the \",[\"$\",\"code\",\"3\",{\"children\":\"event_payload_id\"}],\" field was null). There were some unexpected mismatches on new event data, however, which required a closer look at those events and the way that they were created.\"]}]\n89:[\"$\",\"p\",\"75\",{\"children\":[\"Once we were seeing near 100% match rate between \",[\"$\",\"code\",\"1\",{\"children\":\"output_payloads\"}],\" and \",[\"$\",\"code\",\"3\",{\"children\":\"event_payloads\"}],\", with the only remaining mismatches being explained by events that were created before dual writes were enabled, we were ready to start reading from the new table primarily.\"]}]\n8a:[\"$\",\"$L92\",\"76\",{\"level\":3,\"id\":\"reading-from-new-table-primarily-with-fallback-to-old-table\",\"children\":[\"Reading from new table primarily, with fallback to old table\"]}]\n8b:[\"$\",\"p\",\"77\",{\"children\":[\"Here is an example of this phase of the rollout:\"]}]\na4:Tb8c,\u003cpre class=\"shiki shiki-themes tines-light tines-dark\" style=\"--shiki-light:#2e2d36;--shiki-dark:#f8f4f0;--shiki-light-bg:#00000000;--shiki-dark-bg:#00000000\" tabindex=\"0\"\u003e\u003ccode\u003e\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e def\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e get_action_output\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#A54B7A;--shiki-dark:#F486B8\"\u003e if\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e read_from_event_payloads_with_fallback_enabled\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e?\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payload\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e\u0026#x26;\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eoutput\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003epresence\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e ||\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e output_payload\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e\u0026#x26;\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eoutput\u003c/span\u003e\u003cspan style=\"--shiki-light:#2E2D36;--shiki-dark:#F8F4F0\"\u003e # \u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003etry\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e output_payload\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e if\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e event_payload\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e is\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e nil\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e or\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e its\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e output\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e is\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e empty\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e {}\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e else\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e output_payload\u003c/span\u003e\u003cspan style=\"--shiki-light:#B74D1A;--shiki-dark:#FD975D\"\u003e\u0026#x26;\u003c/span\u003e\u003cspan style=\"--shiki-light:#6E6D76;--shiki-dark:#CFCDCB\"\u003e.\u003c/span\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003eoutput\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e end\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#1F7A57;--shiki-dark:#5ABE89\"\u003e end\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e8c:[\"$\",\"div\",\"78\",{\"dangerouslySetInnerHTML\":{\"__html\":\"$a4\"}}]\n8d:[\"$\",\"p\",\"79\",{\"children\":[\"We had instrumentation so that we could look at events that required us to use the old table. In these cases, we would confirm that the event was created before dual writes were enabled, and therefore didn’t have an associated \",[\"$\",\"code\",\"1\",{\"children\":\"event_payload\"}],\". Once we were reading from the new table primarily everywhere, this project could be considered “done”.\"]}]\n8e:[\"$\",\"$L92\",\"80\",{\"level\":2,\"id\":\"takeaways\",\"children\":[\"Takeaways\"]}]\n8f:[\"$\",\"p\",\"81\",{\"children\":[\"While partitioning seemed like a clear, relatively straightforward solution to our problem of a relentlessly growing \",[\"$\",\"code\",\"1\",{\"children\":\"output_payloads\"}],\" table, it was challenging to find a partitioning strategy that guaranteed no regression in performance at scale. We learned about PostgreSQL’s behavior and idiosyncrasies, particularly those related to partitioning, while refining our approach to systematic problem solving through iterative experimentation, testing, and measuring. Although we solved many problems to have an effective partitioning solution, we are constantly iterating to optimize this code path that works with large/arbitrary JSON data at scale. Watch this space, as we already have something brewing…\"]}]\n90:[\"$\",\"$La5\",null,{}]\n91:[\"$\",\"div\",null,{\"className\":\"$undefined\",\"style\":{\"display\":\"block\",\"width\":\"var(--sectionPadding)\",\"height\":\"var(--sectionPadding)\",\"flex\":\"0 0 var(--sectionPadding)\",\"userSelect\":\"none\"}}]\n"])</script></body></html> |