![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 9 Dołączył: 20.09.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam takie pytanie o rozbudowanych zapytaniach SQL. Szczerze mówiąc nie widziałem za wiele zapytań kogoś innego więc chciałbym spytać się was. Zrobiłem sobie relacyjną bazę danych z kilkoma tabelami(nie będę się tu rozpisywał na ich temat). Mam taki kod SQL:
Żeby wyciągnąć wyniki które mnie interesują, muszę użyć takiego zapytania. Czy tak wiele join`ów może być w jednym zapytaniu czy istnieje jakaś inna metoda aby tego ominąć ![]() Gdy wykonuję to zapytanie to czas osiąga: 0.0011 sekundy więc mało ale gdy będę miał więcej danych to na pewno będzie osiągał dużo więcej tylko czy z tymi join`ami nie będzie rosło wykładniczo. Pozdrawiam |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 341 Pomógł: 40 Dołączył: 23.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
relacyjne bazy danych mają to że dobrze pracują z relacjami.
przy prawidłowo zbudowanej bazie danych nie ma się co bać łączenia nawet wielu tabel. kwestią osobną jest prawidłowe pisanie zapytań. na początek powinieneś wybierać tabele które maksymalnie ograniczają ilość wierszy (czyli to co masz w sekcji where) poza tym zerknij na to:
tu masz skopane łączenie z tą tabelą.. nie wskazujesz żadnego pola do tej tabeli... tak naprawdę zrób explain na zapytaniu. prawidłowe będzie korzystało przy każdym połączeniu z odpowiednich kluczy, poczytaj sobie jak rozumiec wynik explain - to naprawde pomaga j. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 4.09.2012 Ostrzeżenie: (0%) ![]() ![]() |
tak naprawdę zrób explain na zapytaniu. prawidłowe będzie korzystało przy każdym połączeniu z odpowiednich kluczy, poczytaj sobie jak rozumiec wynik explain - to naprawde pomaga explain to podstawa - co mi się nie podoba w tym pytaniu to ogromna ilość operatorów = na stringach np. controller_module.Name = "website" AND location_type.Name = "widget" AND location.Name = "primary" to nie będzie wydajne chyba że załozych hash indexy, ale znowu zalezy ile tam masz rekordów. Mam wrażenie że da się przemysleć i zoptymalizować strukture bazodanową to w 99% pozwala oszczedzić czas. Aha testy rób po wpakowaniu przynajmniej kilkutysięcy rekordów bo że na 10 się szybko wykonuje to nie dziwota (szczególnie jak je sobie wrzuci do cache). -------------------- Jeśli interesują Cię sklepy internetowe i porady z tego tematu to zapraszam na www.sklepy-internetowe.pl.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 9.05.2025 - 08:42 |