{"id":910,"date":"2025-01-21T08:00:00","date_gmt":"2025-01-21T13:00:00","guid":{"rendered":"https:\/\/www.sqltabletalk.com\/?p=910"},"modified":"2025-01-19T23:49:48","modified_gmt":"2025-01-20T04:49:48","slug":"sql-server-2019-and-the-memory-grant","status":"publish","type":"post","link":"https:\/\/www.sqltabletalk.com\/?p=910","title":{"rendered":"SQL Server 2019 and the Memory Grant"},"content":{"rendered":"<h2>Introduction<\/h2>\n<p>When SQL Server runs a query, it needs memory for operations like sorting and joining data. It also relies on memory during query compilation to hold intermediate plans while the Query Optimizer finds the best execution strategy. In parallel processing scenarios, the memory requirement grows even further.<\/p>\n<p>SQL Server manages this by pre-allocating memory for each query through the SQL Server Operating System (SQLOS). This process ensures that no single query can monopolize the server&#8217;s memory. The allocation is saved in the query plan and consists of two parts:<\/p>\n<ul>\n<li><strong>Required Memory<\/strong>: The minimum necessary for sorting and joining.<\/li>\n<li><strong>Additional Memory<\/strong>: Allocated based on the estimated row count.<\/li>\n<\/ul>\n<h2>Identifying Large Memory Grants<\/h2>\n<p>To find queries with the biggest memory grants, you can use the following query:<\/p>\n<pre><code>SELECT mg.granted_memory_kb, \n       mg.session_id, \n       t.text, \n       qp.query_plan\nFROM sys.dm_exec_query_memory_grants AS mg\nCROSS APPLY sys.dm_exec_sql_text(mg.sql_handle) AS t\nCROSS APPLY sys.dm_exec_query_plan(mg.plan_handle) AS qp\nORDER BY 1 DESC;<\/code><\/pre>\n<h2>The Memory Grant Problem<\/h2>\n<p>Memory grants must strike a balance:<\/p>\n<ol>\n<li><strong>Under-allocated Memory<\/strong>: If the memory grant is too small, sorting or joining can spill over to disk (tempdb), causing significant performance slowdowns.<\/li>\n<li><strong>Over-allocated Memory<\/strong>: If the memory grant is too large, it wastes resources and can reduce overall server performance.<\/li>\n<\/ol>\n<p>Accurate memory grants rely on up-to-date statistics and correct cardinality estimates. Outdated or incorrect statistics can lead to inefficient memory usage.<\/p>\n<h2>Row Mode Memory Grant Feedback<\/h2>\n<h3>Overview<\/h3>\n<p>Row Mode Memory Grant Feedback is a feature introduced in <strong>SQL Server 2019<\/strong> (when the database compatibility level is set to 150). It builds on the Batch Mode Memory Grant Feedback introduced in SQL Server 2017, but extends the functionality to rowstore (row-based) data.<\/p>\n<p>This feature adjusts memory grants dynamically based on actual query performance. By comparing estimated memory usage with actual usage, the engine can optimize subsequent executions.<\/p>\n<h3>Key Concepts (from Microsoft Docs)<\/h3>\n<ul>\n<li><strong>Excessive Memory Grant<\/strong>: If a query\u2019s memory grant is more than double its actual usage, SQL Server recalculates and updates the cached plan.<\/li>\n<li><strong>Insufficient Memory Grant<\/strong>: If the query spills to disk, SQL Server recalculates the memory requirement for future executions.<\/li>\n<\/ul>\n<p>For more details, see the official documentation:<br \/><a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/relational-databases\/performance\/performance-metrics-memory-grant-feedback\">Memory Grant Feedback<\/a>.<\/p>\n<h2>How It Works<\/h2>\n<ol>\n<li><strong>First Execution<\/strong>: Memory Grant Feedback does not adjust anything on the first run. Instead, SQL Server collects performance metrics.<\/li>\n<li><strong>Subsequent Executions<\/strong>: The engine applies the feedback it gathered to adjust the memory grant, leading to optimized performance in future runs.<\/li>\n<li><strong>Stable State<\/strong>: After several executions and adjustments, the memory grant eventually stabilizes. From that point on, the allocation remains consistent unless data distribution or other factors change significantly.<\/li>\n<\/ol>\n<p><strong>Example Execution Plan Behavior:<\/strong><\/p>\n<ul>\n<li><strong>First Run<\/strong>: The plan shows <code>IsMemoryGrantFeedbackAdjusted = NoFirstExecution<\/code>.<\/li>\n<li><strong>Second Run<\/strong>: SQL Server adjusts the memory grant, and you see <code>IsMemoryGrantFeedbackAdjusted = YesAdjusting<\/code>.<\/li>\n<li><strong>Stable State<\/strong>: After several runs, the plan reaches <code>IsMemoryGrantFeedbackAdjusted = YesStable<\/code>, indicating that memory grants have stabilized.<\/li>\n<\/ul>\n<h2>Row Mode Memory Grant Feedback in Action<\/h2>\n<p>Below is an example using the <strong>WideWorldImporters<\/strong> database:<\/p>\n<pre><code>SELECT OD.CustomerID,\n       OD.CustomerPurchaseOrderNumber,\n       OD.InternalComments,\n       OL.Quantity,\n       OL.UnitPrice\nFROM [Sales].[Orders] OD\nINNER JOIN [Sales].[OrderLines] OL\n       ON OD.OrderID = OL.OrderID\nORDER BY OD.[Comments];<\/code><\/pre>\n<p><strong>First Execution<\/strong>: The query might receive a large memory grant (e.g., 824 MB) because SQL Server makes conservative estimates.<\/p>\n<p><strong>Second Execution<\/strong>: Based on feedback, SQL Server may reduce the grant to something more efficient (e.g., 13 MB).<\/p>\n<h3>Enabling or Disabling Row Mode Memory Grant Feedback<\/h3>\n<p>You can toggle Row Mode Memory Grant Feedback as follows:<\/p>\n<pre><code>-- Disable\nALTER DATABASE SCOPED CONFIGURATION \n   SET ROW_MODE_MEMORY_GRANT_FEEDBACK = OFF;\n\n-- Enable\nALTER DATABASE SCOPED CONFIGURATION \n   SET ROW_MODE_MEMORY_GRANT_FEEDBACK = ON;<\/code><\/pre>\n<h2>Conclusion<\/h2>\n<p>Row Mode Memory Grant Feedback in SQL Server 2019 is a powerful tool for improving query performance by dynamically adjusting memory grants. It minimizes both over-allocation and under-allocation, helping maintain optimal server performance. As part of the Intelligent Query Processing suite, it adds another layer of efficiency by reducing common memory-related bottlenecks and ensuring better resource utilization.<\/p>\n\n\n<p><a href=\"https:\/\/www.sqltabletalk.com\/?p=325\">Optimize SQL Server Performance: Mastering Memory Grants and Intelligent Query Processing<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>When SQL Server runs a query, it needs memory for operations like sorting and joining data. It also relies on memory during query compilation to hold intermediate plans while the Query Optimizer finds the best execution strategy. In parallel processing scenarios, the memory requirement grows even further. SQL Server manages this by pre-allocating memory for each query through the SQL Server Operating System (SQLOS). This process ensures that no single query can monopolize the server&#8217;s memory<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[12,6,5,91,44],"tags":[472,317,7,471,469,470,131,468,52],"class_list":["post-910","post","type-post","status-publish","format-standard","hentry","category-internals","category-memory","category-performance","category-query-optimization","category-statistics","tag-execution-plan-optimization","tag-intelligent-query-processing","tag-memory","tag-memory-allocation","tag-memory-grant","tag-row-mode-memory-grant-feedback","tag-sql-server","tag-sql-server-2019","tag-sql-server-performance"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>SQL Server 2019 and the Memory Grant - SQL Table Talk<\/title>\n<meta name=\"description\" content=\"When SQL Server runs a query, it needs memory for operations like sorting and joining data. It also relies on memory during query compilation to hold intermediate plans while the Query Optimizer finds the best execution strategy. In parallel processing scenarios, the memory requirement grows even further. SQL Server manages this by pre-allocating memory for each query through the SQL Server Operating System (SQLOS). This process ensures that no single query can monopolize the server&#039;s memory\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.sqltabletalk.com\/?p=910\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SQL Server 2019 and the Memory Grant - SQL Table Talk\" \/>\n<meta property=\"og:description\" content=\"When SQL Server runs a query, it needs memory for operations like sorting and joining data. It also relies on memory during query compilation to hold intermediate plans while the Query Optimizer finds the best execution strategy. In parallel processing scenarios, the memory requirement grows even further. SQL Server manages this by pre-allocating memory for each query through the SQL Server Operating System (SQLOS). This process ensures that no single query can monopolize the server&#039;s memory\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqltabletalk.com\/?p=910\" \/>\n<meta property=\"og:site_name\" content=\"SQL Table Talk\" \/>\n<meta property=\"article:published_time\" content=\"2025-01-21T13:00:00+00:00\" \/>\n<meta name=\"author\" content=\"Yvonne Vanslageren\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Yvonne Vanslageren\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.sqltabletalk.com\/?p=910#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.sqltabletalk.com\/?p=910\"},\"author\":{\"name\":\"Yvonne Vanslageren\",\"@id\":\"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/68bb31b454bafe9e139183ed4f3e9082\"},\"headline\":\"SQL Server 2019 and the Memory Grant\",\"datePublished\":\"2025-01-21T13:00:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.sqltabletalk.com\/?p=910\"},\"wordCount\":575,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/1947e42a9438bccd91691d8b791888e0\"},\"keywords\":[\"Execution Plan Optimization\",\"Intelligent Query Processing\",\"memory\",\"Memory Allocation\",\"Memory Grant\",\"Row Mode Memory Grant Feedback\",\"SQL Server\",\"SQL Server 2019\",\"SQL Server performance\"],\"articleSection\":[\"Internals\",\"Memory\",\"Performance\",\"Query Optimization\",\"Statistics\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.sqltabletalk.com\/?p=910#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.sqltabletalk.com\/?p=910\",\"url\":\"https:\/\/www.sqltabletalk.com\/?p=910\",\"name\":\"SQL Server 2019 and the Memory Grant - SQL Table Talk\",\"isPartOf\":{\"@id\":\"https:\/\/www.sqltabletalk.com\/#website\"},\"datePublished\":\"2025-01-21T13:00:00+00:00\",\"description\":\"When SQL Server runs a query, it needs memory for operations like sorting and joining data. It also relies on memory during query compilation to hold intermediate plans while the Query Optimizer finds the best execution strategy. In parallel processing scenarios, the memory requirement grows even further. SQL Server manages this by pre-allocating memory for each query through the SQL Server Operating System (SQLOS). This process ensures that no single query can monopolize the server's memory\",\"breadcrumb\":{\"@id\":\"https:\/\/www.sqltabletalk.com\/?p=910#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.sqltabletalk.com\/?p=910\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.sqltabletalk.com\/?p=910#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.sqltabletalk.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SQL Server 2019 and the Memory Grant\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.sqltabletalk.com\/#website\",\"url\":\"https:\/\/www.sqltabletalk.com\/\",\"name\":\"SQL Table Talk\",\"description\":\"Breaking Down SQL Server, One Post at a Time.\",\"publisher\":{\"@id\":\"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/1947e42a9438bccd91691d8b791888e0\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.sqltabletalk.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/1947e42a9438bccd91691d8b791888e0\",\"name\":\"Stephen Planck\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/64181114edc3de3d99072c049bcec024f025c9536dc89fc8ff1bac58976ca81e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/64181114edc3de3d99072c049bcec024f025c9536dc89fc8ff1bac58976ca81e?s=96&d=mm&r=g\",\"caption\":\"Stephen Planck\"},\"logo\":{\"@id\":\"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/dexterwiki.com\",\"https:\/\/www.linkedin.com\/in\/stephen-planck-4611b692?trk=people-guest_people_search-card&challengeId=AQErf8gbBmcVMwAAAYsyIsxO-0UvU8z7cHrBpZoo_n3xt9qEKpRN5B_jd_LmAMu-OfeArkQ7GDjobJ2uRoQQV35EQdh_rR6kxA&submissionId=09de7067-c335-8e17-40b8-8dc32b60ed6c&challengeSource=AgEcUCw35zpPmAAAAYsyI4vAWhJTV7Nt4vZYKc3V1qiDBpCkKgUvtlOBgYXcE84&challegeType=AgE_wZiTT09IAQAAAYsyI4vDmNvbZIYe6XHju5V2bXVvM3IVxnJslgY&memberId=AgESFTkUShzs_gAAAYsyI4vGYk0Gic1uc5kB6cKOABA26Gw&recognizeDevice=AgHdSZyUSI5CEwAAAYsyI4vKd_koF9JgpsCJShT8QfbK1QMiv8SI\",\"https:\/\/www.youtube.com\/linuxmate\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/68bb31b454bafe9e139183ed4f3e9082\",\"name\":\"Yvonne Vanslageren\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/22c274a7a354b81a0a8dc5b23e8e0be9bdd81a6bc0541474cfb6b954d6bb2089?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/22c274a7a354b81a0a8dc5b23e8e0be9bdd81a6bc0541474cfb6b954d6bb2089?s=96&d=mm&r=g\",\"caption\":\"Yvonne Vanslageren\"},\"url\":\"https:\/\/www.sqltabletalk.com\/?author=2\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"SQL Server 2019 and the Memory Grant - SQL Table Talk","description":"When SQL Server runs a query, it needs memory for operations like sorting and joining data. It also relies on memory during query compilation to hold intermediate plans while the Query Optimizer finds the best execution strategy. In parallel processing scenarios, the memory requirement grows even further. SQL Server manages this by pre-allocating memory for each query through the SQL Server Operating System (SQLOS). This process ensures that no single query can monopolize the server's memory","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.sqltabletalk.com\/?p=910","og_locale":"en_US","og_type":"article","og_title":"SQL Server 2019 and the Memory Grant - SQL Table Talk","og_description":"When SQL Server runs a query, it needs memory for operations like sorting and joining data. It also relies on memory during query compilation to hold intermediate plans while the Query Optimizer finds the best execution strategy. In parallel processing scenarios, the memory requirement grows even further. SQL Server manages this by pre-allocating memory for each query through the SQL Server Operating System (SQLOS). This process ensures that no single query can monopolize the server's memory","og_url":"https:\/\/www.sqltabletalk.com\/?p=910","og_site_name":"SQL Table Talk","article_published_time":"2025-01-21T13:00:00+00:00","author":"Yvonne Vanslageren","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Yvonne Vanslageren","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.sqltabletalk.com\/?p=910#article","isPartOf":{"@id":"https:\/\/www.sqltabletalk.com\/?p=910"},"author":{"name":"Yvonne Vanslageren","@id":"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/68bb31b454bafe9e139183ed4f3e9082"},"headline":"SQL Server 2019 and the Memory Grant","datePublished":"2025-01-21T13:00:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.sqltabletalk.com\/?p=910"},"wordCount":575,"commentCount":0,"publisher":{"@id":"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/1947e42a9438bccd91691d8b791888e0"},"keywords":["Execution Plan Optimization","Intelligent Query Processing","memory","Memory Allocation","Memory Grant","Row Mode Memory Grant Feedback","SQL Server","SQL Server 2019","SQL Server performance"],"articleSection":["Internals","Memory","Performance","Query Optimization","Statistics"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.sqltabletalk.com\/?p=910#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.sqltabletalk.com\/?p=910","url":"https:\/\/www.sqltabletalk.com\/?p=910","name":"SQL Server 2019 and the Memory Grant - SQL Table Talk","isPartOf":{"@id":"https:\/\/www.sqltabletalk.com\/#website"},"datePublished":"2025-01-21T13:00:00+00:00","description":"When SQL Server runs a query, it needs memory for operations like sorting and joining data. It also relies on memory during query compilation to hold intermediate plans while the Query Optimizer finds the best execution strategy. In parallel processing scenarios, the memory requirement grows even further. SQL Server manages this by pre-allocating memory for each query through the SQL Server Operating System (SQLOS). This process ensures that no single query can monopolize the server's memory","breadcrumb":{"@id":"https:\/\/www.sqltabletalk.com\/?p=910#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqltabletalk.com\/?p=910"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqltabletalk.com\/?p=910#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqltabletalk.com\/"},{"@type":"ListItem","position":2,"name":"SQL Server 2019 and the Memory Grant"}]},{"@type":"WebSite","@id":"https:\/\/www.sqltabletalk.com\/#website","url":"https:\/\/www.sqltabletalk.com\/","name":"SQL Table Talk","description":"Breaking Down SQL Server, One Post at a Time.","publisher":{"@id":"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/1947e42a9438bccd91691d8b791888e0"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sqltabletalk.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/1947e42a9438bccd91691d8b791888e0","name":"Stephen Planck","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/64181114edc3de3d99072c049bcec024f025c9536dc89fc8ff1bac58976ca81e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/64181114edc3de3d99072c049bcec024f025c9536dc89fc8ff1bac58976ca81e?s=96&d=mm&r=g","caption":"Stephen Planck"},"logo":{"@id":"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/dexterwiki.com","https:\/\/www.linkedin.com\/in\/stephen-planck-4611b692?trk=people-guest_people_search-card&challengeId=AQErf8gbBmcVMwAAAYsyIsxO-0UvU8z7cHrBpZoo_n3xt9qEKpRN5B_jd_LmAMu-OfeArkQ7GDjobJ2uRoQQV35EQdh_rR6kxA&submissionId=09de7067-c335-8e17-40b8-8dc32b60ed6c&challengeSource=AgEcUCw35zpPmAAAAYsyI4vAWhJTV7Nt4vZYKc3V1qiDBpCkKgUvtlOBgYXcE84&challegeType=AgE_wZiTT09IAQAAAYsyI4vDmNvbZIYe6XHju5V2bXVvM3IVxnJslgY&memberId=AgESFTkUShzs_gAAAYsyI4vGYk0Gic1uc5kB6cKOABA26Gw&recognizeDevice=AgHdSZyUSI5CEwAAAYsyI4vKd_koF9JgpsCJShT8QfbK1QMiv8SI","https:\/\/www.youtube.com\/linuxmate"]},{"@type":"Person","@id":"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/68bb31b454bafe9e139183ed4f3e9082","name":"Yvonne Vanslageren","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/22c274a7a354b81a0a8dc5b23e8e0be9bdd81a6bc0541474cfb6b954d6bb2089?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/22c274a7a354b81a0a8dc5b23e8e0be9bdd81a6bc0541474cfb6b954d6bb2089?s=96&d=mm&r=g","caption":"Yvonne Vanslageren"},"url":"https:\/\/www.sqltabletalk.com\/?author=2"}]}},"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=\/wp\/v2\/posts\/910","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=910"}],"version-history":[{"count":3,"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=\/wp\/v2\/posts\/910\/revisions"}],"predecessor-version":[{"id":960,"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=\/wp\/v2\/posts\/910\/revisions\/960"}],"wp:attachment":[{"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=910"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=910"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=910"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}