Този проблем е много по-добре решен извън mysql, на друг език. С други думи, имате матрица от места, някои от които са заети (сиви):
и искате да намерите всички правоъгълници с дадени размери , да речем 3x5. Можете да направите това много ефективно чрез двупроходно линейно O(n)
времеа алгоритъм (n е брой места):
1) при първо преминаване , преминете по колони отдолу нагоре и за всяко място посочете броя на наличните последователни места до това:
повторете, докато:
2) при второ преминаване , преминете по редове и потърсете поне 5 последователни числа, по-големи или равни на 3:
така че накрая получавате:
което дава решението:тези поредици от числа (зелени зони) са горни ръбове на 2 възможни правоъгълника 3x5 свободни места.
Алгоритъмът може лесно да бъде подобрен до напр. вземете всички правоъгълници с максимална площ. Или може да се използва за намиране на всякакви непрекъснати области (не само с форма на правоъгълник) от N места - просто по време на второто преминаване потърсете непрекъсната последователност от числа, която е сумирана до поне N.