Internally the table is a composite hash table / array structure. Consecutive values starting at integer index 1 are inserted into the array, else the values go into the hash table. Hence, in the example below::
local t = {}
t[1] = 10 -- goes into array
t[2] = 20 -- goes into array
t[100] = 30 -- goes into hash table as not consecutive