Laten we eens kijken naar de complexiteit van de tijd voor beide gevallen:
IN ARRAY-BENADERING: Entiteitstabel van M rows
, met ACL-invoerreeks van size N
(rijen in de ACL-tabel zijn hier niet relevant)
TIJDCOMPLEXITEIT :O[N*log(M)]
DOEN AAN BENADERING: Entiteitstabel van M rows
, met ACL-tabel van N rows
TIJDCOMPLEXITEIT :O[M + N]
In de praktijk hebben we over het algemeen een situatie als,
IN ARRAY
N=10,000
M=1,000,000
O=>60,000
DOE MEE
N=10,000
M=1,000,000
O=>1,010,000
En in theorie zou het worstcasescenario voor in array zijn
IN ARRAY
N=1,000,000,000
M=1,000,000,000
O=>9,000,000,000
DOE MEE
N=1,000,000,000
M=1,000,000,000
O=>2,000,000,000
Wat betekent dit? Samenvatting/TL;DR
Als elke gebruiker slechts toegang krijgt tot een fractie van de objecten in een entiteit, gebruik dan IN-array.
Als elke gebruiker een ACL-vermelding heeft voor elk object van een entiteit, gebruikt u JOIN. Hoewel de winst niet van verschillende ordes van grootte zal zijn (tenzij je biljoenen producten hebt), wil je misschien toch IN-array gebruiken.
Gebruik in beide gevallen ACL alleen wanneer dit absoluut noodzakelijk is! Kiezers FTW!