W aktualnie projekcie posiadam tabele z adresami stron (pages) oraz tabele (params) zawierającą dane dotyczące stron. Problem polega na wyświetleniu listy adresów z najstarszymi parametrami. Jednym z rozwiązań jest zastosowanie podzapytania - jednak jest to bardzo powolne, gdyż baza stron może sięgnąć tysięcy a baza parametrów milionów. Drugim rozwiązaniem jest połączenie dwa razy tabel z parametrami na zasadzie:
SELECT p.id, p.url, p1.value FROM pages AS p LEFT JOIN params AS p1 ON (p.id = p1.pageid AND p1.type = 0) LEFT JOIN params AS p2 ON (p1.type = p2.type AND p1.pageid = p2.pageid AND p1.id < p2.id) WHERE p2.id IS NULL
dzięki czemu uzyskuje szybko i wydajnie liste z stron z jednym z parametrów. Parametrów jest 5 a więc pytanie w jaki sposób na szybkość i optymalność wpłynie połączenie tej samej tabeli 10 razy. Niestety nie jestem w stanie samemu sprawdzić tego rozwiązania.
Pozdrawiam