---
id: change/bcquality/94
type: change
title: "#94 Correct performance knowledge guidance"
summary: Several performance knowledge articles and their samples were corrected for partial records, transactions, N+1 lookups, SIFT, bulk writes and read isolation. The invalid filter-only SetLoadFields rule and the generic production-scale article were removed, and an unsafe Sales Header deletion sample was replaced with a staging-table scenario.
tier: official
language: en
tags:
  - fix
  - main
system: development
review:
  state: reviewed
  by: opus
  at: "2026-10-08T02:13:04.242Z"
  flags: []
generated:
  at: "2026-10-08T01:26:53.141Z"
  pipeline: 0.2.0
  prompts:
    extract-change: 1
  input_hash: 0e06485027b3cfa8bff9f2eadbd3cb845846495a
evidence:
  - kind: code
    url: https://github.com/microsoft/BCQuality/pull/94
    title: "microsoft/BCQuality#94: Correct performance knowledge guidance"
    date: "2026-07-14"
    commit: 0e06485027b3cfa8bff9f2eadbd3cb845846495a
    t: null
    quote: correct partial-record, transaction, N+1, SIFT, bulk-write, and read-isolation semantics and samples
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
  changes: []
number: 94
repo: microsoft/BCQuality
source_id: bcquality-prs
url: https://github.com/microsoft/BCQuality/pull/94
kind: pr
base_branch: main
major: null
merged_at: "2026-07-14T09:26:30Z"
author: JesperSchulz
author_type: User
community_contribution: false
labels: []
change_class: code
change_kind: fix
behavior_change: false
breaking: false
files:
  count: 31
  additions: 277
  deletions: 259
  al: 31
apps: []
objects_touched: []
objects_unjoined:
  - path: microsoft/knowledge/performance/addloadfields-in-report-onpredataitem.bad.al
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/performance/addloadfields-in-report-onpredataitem.good.al
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/performance/addloadfields-in-report-onpredataitem.md
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/performance/avoid-commit-inside-loops.good.al
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/performance/avoid-commit-inside-loops.md
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/performance/avoid-get-inside-loop-on-large-table.bad.al
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/performance/avoid-get-inside-loop-on-large-table.good.al
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/performance/avoid-get-inside-loop-on-large-table.md
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/performance/choose-maintainsiftindex-by-read-write-ratio.md
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/performance/load-common-fields-before-branching-on-case.bad.al
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/performance/load-common-fields-before-branching-on-case.good.al
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/performance/load-common-fields-before-branching-on-case.md
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/performance/omit-filter-only-fields-from-setloadfields.bad.al
    status: removed
    reason: removed
  - path: microsoft/knowledge/performance/omit-filter-only-fields-from-setloadfields.good.al
    status: removed
    reason: removed
  - path: microsoft/knowledge/performance/omit-filter-only-fields-from-setloadfields.md
    status: removed
    reason: removed
  - path: microsoft/knowledge/performance/order-case-branches-by-frequency.good.al
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/performance/order-case-branches-by-frequency.md
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/performance/prefer-dictionary-over-temporary-table-for-lookups.md
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/performance/prefer-modifyall-over-per-row-modify.bad.al
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/performance/prefer-modifyall-over-per-row-modify.good.al
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/performance/prefer-modifyall-over-per-row-modify.md
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/performance/prefer-readisolation-over-locktable-for-reads.bad.al
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/performance/prefer-readisolation-over-locktable-for-reads.good.al
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/performance/prefer-readisolation-over-locktable-for-reads.md
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/performance/production-scale-tables-warrant-extra-analysis.md
    status: removed
    reason: removed
  - path: microsoft/knowledge/performance/singleton-setup-tables-need-no-access-optimization.md
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/performance/temporary-tables-have-no-database-cost.md
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/performance/use-deleteall-for-filtered-bulk-deletion.bad.al
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/performance/use-deleteall-for-filtered-bulk-deletion.good.al
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/performance/use-deleteall-for-filtered-bulk-deletion.md
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/performance/use-textbuilder-for-string-concatenation-in-loops.md
    status: modified
    reason: not-in-snapshot
obsoletions: []
backports: []
fixes_issues: []
work_items: []
systems:
  - development
  - platform
quote: correct partial-record, transaction, N+1, SIFT, bulk-write, and read-isolation semantics and samples
joined_against:
  major: null
  commit: null
---

# #94 Correct performance knowledge guidance

> Several performance knowledge articles and their samples were corrected for partial records, transactions, N+1 lookups, SIFT, bulk writes and read isolation. The invalid filter-only SetLoadFields rule and the generic production-scale article were removed, and an unsafe Sales Header deletion sample was replaced with a staging-table scenario.

[Pull request](https://github.com/microsoft/BCQuality/pull/94) · merged into `main` on 2026-07-14 by JesperSchulz · 31 files (+277 -259), 31 AL · fix · tier official · reviewed (checked by Opus)

## What changed

- Corrected the semantics and samples for partial records, transactions, N+1 lookups, SIFT, bulk writes and read isolation
- Removed the invalid filter-only fields rule and the generic production-scale article
- Narrowed the singleton, TextBuilder, dictionary and temporary-table guidance
- Paired good and bad examples now keep the same behaviour
- Replaced the unsafe Sales Header deletion sample with a staging-table scenario

## AL objects touched

- `microsoft/knowledge/performance/addloadfields-in-report-onpredataitem.bad.al`: modified, not in the BC? snapshot
- `microsoft/knowledge/performance/addloadfields-in-report-onpredataitem.good.al`: modified, not in the BC? snapshot
- `microsoft/knowledge/performance/addloadfields-in-report-onpredataitem.md`: modified, not in the BC? snapshot
- `microsoft/knowledge/performance/avoid-commit-inside-loops.good.al`: modified, not in the BC? snapshot
- `microsoft/knowledge/performance/avoid-commit-inside-loops.md`: modified, not in the BC? snapshot
- `microsoft/knowledge/performance/avoid-get-inside-loop-on-large-table.bad.al`: modified, not in the BC? snapshot
- `microsoft/knowledge/performance/avoid-get-inside-loop-on-large-table.good.al`: modified, not in the BC? snapshot
- `microsoft/knowledge/performance/avoid-get-inside-loop-on-large-table.md`: modified, not in the BC? snapshot
- `microsoft/knowledge/performance/choose-maintainsiftindex-by-read-write-ratio.md`: modified, not in the BC? snapshot
- `microsoft/knowledge/performance/load-common-fields-before-branching-on-case.bad.al`: modified, not in the BC? snapshot
- `microsoft/knowledge/performance/load-common-fields-before-branching-on-case.good.al`: modified, not in the BC? snapshot
- `microsoft/knowledge/performance/load-common-fields-before-branching-on-case.md`: modified, not in the BC? snapshot
- `microsoft/knowledge/performance/omit-filter-only-fields-from-setloadfields.bad.al`: removed
- `microsoft/knowledge/performance/omit-filter-only-fields-from-setloadfields.good.al`: removed
- `microsoft/knowledge/performance/omit-filter-only-fields-from-setloadfields.md`: removed
- `microsoft/knowledge/performance/order-case-branches-by-frequency.good.al`: modified, not in the BC? snapshot
- `microsoft/knowledge/performance/order-case-branches-by-frequency.md`: modified, not in the BC? snapshot
- `microsoft/knowledge/performance/prefer-dictionary-over-temporary-table-for-lookups.md`: modified, not in the BC? snapshot
- `microsoft/knowledge/performance/prefer-modifyall-over-per-row-modify.bad.al`: modified, not in the BC? snapshot
- `microsoft/knowledge/performance/prefer-modifyall-over-per-row-modify.good.al`: modified, not in the BC? snapshot
- `microsoft/knowledge/performance/prefer-modifyall-over-per-row-modify.md`: modified, not in the BC? snapshot
- `microsoft/knowledge/performance/prefer-readisolation-over-locktable-for-reads.bad.al`: modified, not in the BC? snapshot
- `microsoft/knowledge/performance/prefer-readisolation-over-locktable-for-reads.good.al`: modified, not in the BC? snapshot
- `microsoft/knowledge/performance/prefer-readisolation-over-locktable-for-reads.md`: modified, not in the BC? snapshot
- `microsoft/knowledge/performance/production-scale-tables-warrant-extra-analysis.md`: removed
- `microsoft/knowledge/performance/singleton-setup-tables-need-no-access-optimization.md`: modified, not in the BC? snapshot
- `microsoft/knowledge/performance/temporary-tables-have-no-database-cost.md`: modified, not in the BC? snapshot
- `microsoft/knowledge/performance/use-deleteall-for-filtered-bulk-deletion.bad.al`: modified, not in the BC? snapshot
- `microsoft/knowledge/performance/use-deleteall-for-filtered-bulk-deletion.good.al`: modified, not in the BC? snapshot
- `microsoft/knowledge/performance/use-deleteall-for-filtered-bulk-deletion.md`: modified, not in the BC? snapshot
- `microsoft/knowledge/performance/use-textbuilder-for-string-concatenation-in-loops.md`: modified, not in the BC? snapshot

## Context

- Systems: development, platform
- From the description: "correct partial-record, transaction, N+1, SIFT, bulk-write, and read-isolation semantics and samples"

Source: metadata of a merged pull request in microsoft/BCQuality (bcquality): title, labels, changed paths and counts, with a summary in our words. No source text and no description beyond one short quote (D10, D61).
