![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 1 Dołączył: 4.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Wybieranie filmów podobnych na podstawie przypisanych im tagów.
tabela filmy: film_id,adres,nazwa tabela tag_film film_id,tag_id
Działa. Problem jest taki, że działa bardzo wolno. Prawdopodobna przyczyna: Najpierw wykonywany jest join na całej tabeli, dopiero później wybiera się z niej fragment z film_id równy podanemu w zmiennej. Jak można zoptymalizować to zapytanie? Ten post edytował soomal 16.09.2007, 19:10:06 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 611 Pomógł: 19 Dołączył: 28.02.2005 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
dodaj na początku zapytania explain i pokaż co pokazało to może coś zaradzimy
![]() btw. nie uważasz że to film_id AS film_id jest bez sensu ![]() WHERE tag_id IN (SELECT tag_id FROM tag_film WHERE film_id='.$film_id.') nie łatwiej where film_id='.$film_id.' ? Ten post edytował sticker 16.09.2007, 20:05:25 -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 1 Dołączył: 4.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Coś takiego dało EXPLAIN. Cytat WHERE tag_id IN (SELECT tag_id FROM tag_film WHERE film_id='.$film_id.') nie łatwiej where film_id='.$film_id.' where film_id=.'$film_id.' miało by zastąpić cały ten fragment? Nie sądziłem, że to tak może zadziałać. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 04:02 |