Business Central v29: SQL Table Extensions Redesign Explained
Business Central v29 completes a redesign of table extensions by storing all custom fields directly in the primary SQL table instead of creating separate extension tables, eliminating JOIN operations and improving performance. This architectural change simplifies indexing and reduces overhead for heavily customized systems but introduces a 1024-column SQL Server limit constraint.

post Aardvark Labs
"All custom fields are now stored directly within the primary SQL table. No extension tables are created."
Key points
- Pre-v23 created separate SQL tables for each extension, requiring multiple JOINs and hindering performance and indexing
- v23 consolidated all extension fields into a single extension table per base table, reducing to one JOIN
- v29 eliminates extension tables entirely by storing custom fields directly in the primary table
- SQL Server’s 1024-column limit per table now applies as a practical constraint, with compiler warnings and errors when exceeded
- Best practices like avoiding unnecessary page fields and careful index design remain critical despite architectural improvements
Quotes
- “All custom fields are now stored directly within the primary SQL table. No extension tables are created.” (This fundamental architectural change eliminates JOIN operations and is the core improvement in v29.)
- “SQL Server enforces a maximum of 1024 columns per table.” (Organizations must be aware of this hard constraint when planning customizations to avoid compilation errors.)
- “Business Central continues to be a write heavy application.” (This context helps developers make informed decisions about indexing strategies despite architectural improvements.)
Context
- Features: table extensions redesign, direct field storage in primary tables, column limit warnings, schema consolidation, performance optimization
- Versions: v29, v23, Pre-v23
Source: Aardvark Labs, community blog. Summary, key points and quotes are derived (CONTENT-NOTICE.md); read the original for the full text.