![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 59 Pomógł: 6 Dołączył: 28.10.2009 Skąd: że znowu... Ostrzeżenie: (0%) ![]() ![]() |
Mam pewien problem z zapytaniem, które strasznie zamula mi stronę.
Na stronie chcę pobrać Wszystkie obrazki z bazy danych które zostały polubione powyżej 3 razy. Moje zapytanie wygląda tak: Kod SELECT * FROM obrazek WHERE id in (SELECT id_obrazek FROM loveit HAVING count(loveit.id) > 3 ) ORDER BY id desc LIMIT $ilosc Tabela obrazek - zawiera listę wszystkich obrazków pola w bazie id - nr id obrazka Tabela loveit - zawiera listę wszystkich osób które lubią obrazek pola w bazie id_obrazek - nr id obrazka Wiem że problem jest dokładnie tutaj Kod WHERE id in (SELECT id_obrazek FROM loveit HAVING count(loveit.id) > 3 ) Bo gdy usunę tę cześć działa bez problemu. Czy jest ktoś w stanie mi pomóc w jaki sposób mogę to zoptymalizować? Ten post edytował Natalka 15.05.2011, 14:08:14 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Jest sporo wartościowych tekstów w internecie na temat Indeksów, w skrócie mogę powiedzieć że mówią one jak porządkować dane w tabeli co przyśpiesza ich pobieranie.
Ogólnie przyjmuję się taką zasadę że indeksy zakłada się na pola po których porządkujesz/grupujesz tabelę i na klucze obce( przy silniku InnoDB jest to wymóg). Btw. Zainteresuj się silnikiem InnoDB i relacjami. Cytat Muszę ustawić nazwę klucza (czy ona ma jakiś związek z zapytaniem?) Nie jest ona ważna. Cytat Czy indeksy przyśpieszają pobieranie danych? Gdybyś z większego serwisu/forum wywaliła indeksy sądzę że by nawet nie ruszył (IMG:style_emoticons/default/biggrin.gif) - czyli tak, przyśpieszają i to czasami bardzo. P.S. To nie jest zaawansowane zapytanie (IMG:style_emoticons/default/wink.gif) Ten post edytował melkorm 15.05.2011, 14:41:32 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 02:54 |