top of page


Another edge case of an overflowing record in a SQL table
As a follow-up to my previous post , I'd like to linger a little longer on the topic of wide rows and the effects of row overflow in SQL Server, and specifically on the storage impact that we can observe in Business Central SaaS tenants when too many rows spill into the row overflow storage unit. Sample data and the first test The tests below that I'm going to run will be built around the following table with four text fields. table 50101 "Large Test Rec" { DataClassificati
Jan 9


SQL Server record size: How many fields is too much?
The maximum size of a table row in SQL Server in limited to 8 KB, or to be more precise 8060 bytes, if we follow Microsoft online articles, such as Maximum Capacity Specifications for SQL Server - SQL Server | Microsoft Learn . This limit arises from the SQL Server data storage architecture: table rows are organized in 8-kilobyte pages, and a single row cannot exceed the size of the page, therefore 8KB is the maximum amount of storage space that can be allocated for a single
Dec 23, 2025


On the efficiency of indexes on a skewed dataset
Recently, one particular piece of code in Business Central's codeunit 1501 Workflow Management once again revived the old discussion about the benefits of calling IsEmpty before actually retrieving the records with FindSet . Yes, that inexhaustible if not IsEmpty then FindSet . I already wrote about this a few times here and here . But this time the combination of IsEmpty with FindSet appeared to be a good pretext to talk about index efficiency: when a seemingly good index
Dec 10, 2025


Performance benefits of SetLoadFields in a slow network
Introduction of the SetLoadFields function in AL language that allowed to limit the number of fields returned to the Business Central...
Sep 3, 2025


JIT loads vs Full record load
Since the time when I came across this post by Waldo (or actually, he mentioned his test results in one online discussion) I was curious...
May 31, 2025


To sort, or not to sort, that is the question
Back in the old Navision days, when clients' data were stored in the Navision native database instead of Azure SQL Server, and functions...
May 30, 2025


Buffered inserts and deadlocks
Recently I was debugging a very interesting deadlock case which I want to share in a blog post now. It was especially curious because, as...
Feb 22, 2025


Filtering on FlowFields
It has been said so many times that filtering on FlowFields is bad for performance that we are used to avoiding this kind of filters in...
Feb 6, 2025


Table indexes and inserts
Following my series of posts where I have been addressing various aspects of table indexing, this post delves into the same old argument...
Dec 21, 2024


Another alternative to SIFT: Columnstore indexes
According to this article on Microsoft Learn portal , non-clustered columnstore indexes (or NCCI) are seen as a possible replacement for...
Nov 10, 2024


Hidden SQL queries in AL you (probably) want to avoid
Development of Business Central extensions is very much about the database communication, and as AL developers, we always control the...
Oct 28, 2024


if not IsEmpty then FindSet... again
Yes, I'm back again on this inexhaustible topic. The question of weather the call of IsEmpty before FindSet in AL can have a positive...
Oct 22, 2024


Covering indexes as an alternative to SIFT
In two of my previous blog posts I reviewed some pros and cons of the SumIndexField Technology (or SIFT) in Business Central. On the one...
Oct 20, 2024


if not IsEmpty then FindSet... Or not?
This post is a result of one very fruitful discussion with many knowledgeable Business Central enthusiasts in a long LinkedIn thread. Now...
Aug 25, 2024


The dark side of SumIndexFields. Concurrency.
My previous post was dedicated to an overview of Business Central's SumIndexField Technology, or simply SIFT, which helps us collect...
Aug 9, 2024


SIFT
SIFT, which stands for Sum Index Flow Technology, used to be a know-how in the Navision database, a data structure that stored...
Aug 5, 2024


Navision legacy in AL: RecordLevelLocking
RecordLevelLocking function in AL is a heritage of the C/SIDE times and the Navision native database. In those old days when Navision...
Jun 30, 2024


Select with partially matching index: can we make it faster?
Let's assume we want to select a set of customer ledger entries based on two values: salesperson code and the payment reference. Or any...
Jun 20, 2024


Lock timeouts and deadlocks
A long time ago (in a galaxy far away) I published some blog posts with a deeper overview of the Business Central's ReadIsolation...
Jun 9, 2024


Read Committed Snapshot isolation and the Write Skew anomaly
Much has been said recently about the benefits of the Azure SQL for Business Central performance, and in particular a few articles...
Nov 26, 2023
bottom of page