ms-accessjetms-jet-ace

Maximum number of rows in an MS Access database engine table?


We know the MS Access database engine is 'throttled' to allow a maximum file size of 2GB (or perhaps internally wired to be limited to fewer than some power of 2 of 4KB data pages). But what does this mean in practical terms?

To help me measure this, can you tell me the maximum number of rows that can be inserted into a MS Access database engine table?

To satisfy the definition of a table, all rows must be unique, therefore a unique constraint (e.g. PRIMARY KEY, UNIQUE, CHECK, Data Macro, etc) is a requirement.

EDIT: I realize there is a theoretical limit but what I am interested in is the practical (and not necessarily practicable), real life limit.


Solution

  • Here's my attempt:

    I created a single-column (INTEGER) table with no key:

    CREATE TABLE a (a INTEGER NOT NULL);
    

    Inserted integers in sequence starting at 1.

    I stopped it (arbitrarily after many hours) when it had inserted 65,632,875 rows. The file size was 1,029,772 KB.

    I compacted the file which reduced it very slightly to 1,029,704 KB.

    I added a PK:

    ALTER TABLE a ADD CONSTRAINT p PRIMARY KEY (a);
    

    which increased the file size to 1,467,708 KB.

    This suggests the maximum is somewhere around the 80 million mark.