Alexander Drogin
banner
adrogin.bsky.social
Alexander Drogin
@adrogin.bsky.social
Microsoft Business Central developer
SetLoadFields function helps developers to avoid unnecessary table joins and reduce the amount of data sent over the network. But how significant is the benefit of a smaller dataset? When does it really make a difference? Some measurements in a blog post.

www.keytogoodcode.com/post/perform...
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 server by a SQL query was a big step forward towards achieving bet...
www.keytogoodcode.com
September 3, 2025 at 1:00 PM
It looks like I need to practice my skills in using the Ctrl+F function. I once asked how I could generate a hash with the Cryptography Management codeunit based on a binary key. Easy, it turns out. There is a function for this that accepts a base64 key. I just did not find it.
June 6, 2025 at 8:18 AM
How can just in time loads be faster than a full record load? After all, this means two queries reading the same table. And two are slower than one, right? Right, but only if we allow these two queries to run until completion.

www.keytogoodcode.com/post/jit-loa...
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 to try it myself and dig into its unexpected results. The quest...
www.keytogoodcode.com
May 31, 2025 at 5:59 PM
Which side are you on when it comes to the question whether SetCurrentKey is beneficial for data access performance in AL? Should we use it or drop it?

I give a definite and unequivocal answer: it depends.

www.keytogoodcode.com/post/to-sort...
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 like FindSet and FindFirst did not exist in the AL language, ev...
www.keytogoodcode.com
May 30, 2025 at 7:20 AM
I have a good question for #bcalhelp. I need to generate a hash with a function from Cryptography Management CU, which requires a text argument as the key. But I need to send a byte array. Text in AL is UTF-8, so bytes above 7F turn into 2-byte sequences, and my key never matches the counterpart.
April 17, 2025 at 1:31 PM
I worked a little more on the BC cost tracer and added a couple new features: node grouping and a new layout with the fCoSE algorithm, which is very efficient in compound nodes clustering. Thanks to this algorithm, item ledger entries can be grouped by the document no.
github.com/adrogin/BCVi...
GitHub - adrogin/BCVisuals: Visual control add-ins for Business Central
Visual control add-ins for Business Central. Contribute to adrogin/BCVisuals development by creating an account on GitHub.
github.com
March 22, 2025 at 6:34 PM
Looking forward to be on stage at @bctechdays.com with @stefanmaron.com
March 13, 2025 at 10:53 AM
I almost never use the return value of the Insert function in AL, but recently I found it useful in avoiding a specific deadlock situation. And the deadlock itself was a very curious one.

www.keytogoodcode.com/post/buffere...
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 it turned out, it was caused by the Business Central's bulk in...
www.keytogoodcode.com
February 22, 2025 at 3:21 PM
The holidays are almost over, next week I am back to work and other Business Central activities. But these two weeks made a great breakaway tour.
February 14, 2025 at 7:27 PM
Are you afraid of filters on FlowFields in AL? Well... There is definitely a reason to be cautious. But it may not be as bad as it seems, and certainly not as bad as some other methods which are used to avoid these filters.

www.keytogoodcode.com/post/filteri...
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 AL at all costs. So whenever a developer needs to select a subse...
www.keytogoodcode.com
February 6, 2025 at 2:59 AM
Following my series of posts where I've been addressing various aspects of table indexing, this post delves into the same argument from a different point of view. Now I want to ask a question: how indexing impacts query performance from the insert/update side.

www.keytogoodcode.com/post/table-i...
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 from a different point of view. Previously, I measured timings ...
www.keytogoodcode.com
December 21, 2024 at 6:58 PM
Did you ever get confused with Business Central's temporary tables and the way temp tables are passed to procedure parameters? I did too, so I wrote a post as a memo.

www.keytogoodcode.com/post/tempora...
Temporary tables in procedure parameters
When we declare multiple instances of a record variable referencing the same table in AL code, we essentially receive different instances of the active record, but the same underlying database table b...
www.keytogoodcode.com
November 25, 2024 at 8:26 AM