Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 43 Pomógł: 0 Dołączył: 13.02.2008 Ostrzeżenie: (0%)
|
Witam
Mam problem z zaprojektowaniem aplikacji a dokładniej chodzi o system powiązań. załóżmy, że mamy jakiś obiekt np strona internetowa, której dane są zapisane w bazie, (będzie 10 000 takich obiektów a docelowo 100 000). Są one ze sobą powiązane - średnio jedna strona do 100 innych. na razie jest prosto, mam dwie tabeli. Jedna przechowuje dane strony druga powiązania. i tutaj mam pytanie jakie zapytanie jest wydajniejsze przy wyświetlaniu danych powiązanych: 1. SELECT *(jakieś dane) FROM strona INNER JOIN strona_strona ON strona_strona.id_str=strona.id WHERE strona.id='".$id."' 2. SELECT *(jakieś dane) FROM strona, strona_strona WHERE strona_strona.id_str='".$id."' AND strona_strona.id_str2=strona.id sprawa się komplikuje gdy strony mają dalsze powiązania: StronaA -> StronaB -> StronaC logując się na stroneA chciałbym zobaczyć linki zarówno stron powiązanych (stronaB+99 inncyh) jak i stron powiązanych 2 poziomu (stronaC +99 innych) warunek jest taki, że przeczytać informacje o linku można pod warunkiem, że ma się powiązanie z daną strona lub powiązanie 2 poziomu. i tu jest problem bo: 1. dodając link powinienem od razu dodać do bazy powiązania, które strony będą go widziały ale wtedy szybko powstanie bardzo dużo rekordów: 100 stronA x 100 stronB = 10 000 powiązań dla jednego linku. A linków będzie wiele - nawet do 20tu na jedna stronę. 2. drugi sposób to zrobić zapytanie po wszystkie powiązane strony i powiązane z drugiego poziomu, zachować wyniki w tablicy a następnie zapytanie po linki i porownywać czy id strony pobranego linku znajduje się w tablicy i jeśli tak to wyświetlić, jeśli nie to nie wyświetlać. Czy to będzie optymalne? Chodzi o tablice z nawet 10 000 danych i potem sprawdzanie czy dany id znajduje się w tablicy, dodatkowo po wejściu na link aby zobaczyć więcej informacji znowu musiałbym zrobić zapytanie po wszystkie powiązania (10 000) i umożliwić przeczytanie informacji tylko jeśli id znajduje się w tablicy. 3. czy da się to zrobić jeszcze w inny - bardziej optymalny sposób? |
|
|
|
humman wiele rekordów czy wiele zapytań 20.06.2012, 18:32:27
trafas Z tego co widzę, to zasada powiązania stron będzie... 20.06.2012, 23:07:12 ![]() ![]() |
|
Aktualny czas: 22.12.2025 - 16:42 |