Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [sql] pod zapytania
propage
post
Post #1





Grupa: Zarejestrowani
Postów: 330
Pomógł: 0
Dołączył: 25.01.2008

Ostrzeżenie: (0%)
-----


Jeśli mam takie zapytanie

SELECT * FORM .... LIMIT 0, 1

To działa one dwa razy szybciej niż takie

SELECT *, (SELECT x FROM ... ) FORM .... LIMIT 0, 1

Zapytanie działa dwa razy szybciej niezaleznie od tego ile rekordów zróci, czy 100, czy 1, tzn. te subzapytanie, zawsze się wykonuje dla wszystkich potencjalnych rekordów prawpodobnie, przez co czas całego zapytania jest nie potrzebnie wydłużany.
Jak zrobić, aby subzapytanie wykonywało się tylko dla rekordów, które zwróciło głowne zapytanie?


Go to the top of the page
+Quote Post
mmmmmmm
post
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


Pewnie można połączyć JOINem. Dlaczego robisz w ten sposób? Napisz konkret.
Go to the top of the page
+Quote Post
propage
post
Post #3





Grupa: Zarejestrowani
Postów: 330
Pomógł: 0
Dołączył: 25.01.2008

Ostrzeżenie: (0%)
-----


nie mogę połączyć joinem.
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Napisz konkretnie co chcesz osiągnąć. Bez tego nie jesteśmy w stanie ci poprawnie pomóc...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
propage
post
Post #5





Grupa: Zarejestrowani
Postów: 330
Pomógł: 0
Dołączył: 25.01.2008

Ostrzeżenie: (0%)
-----


chce osiagnać to, żeby podzapytanie wykonaywało się w drugiej kolejności, a nie w pierwszej kolejności. Czy da się to jakoś skonfigurować
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A czemu nie możesz połączyć JOINEM? Pokazujesz nam jakieś pseudokody i naprawdę nie jesteśmy w stanie ci nic wywróżyć....
Pokaż całe zapytanie jak wygląda, napisz czemu nie mozesz tego zamienic na JOIN to pogadamy jak normalni ludzie a nie jak wróżki


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
propage
post
Post #7





Grupa: Zarejestrowani
Postów: 330
Pomógł: 0
Dołączył: 25.01.2008

Ostrzeżenie: (0%)
-----


bo już łącze joinem z tą tabelą ale jakby z innego powodu.

Napisze konkretniejszy przykład

Kod
SELECT *, (SELECT kategoria_id  FORM produkt_2_kategoria WHERE produkt_id = p.produkt_id AND main = 1 ) as kategoria_głowna FROM produkt p left join produkt_2_kategoria p_2_k WHERE p_2_k. kategoria_id = X


Ten post edytował propage 15.05.2013, 18:18:39
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #8





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


  1. SELECT *, p2.kategoria_id AS kategoria_głowna
  2. FROM
  3. produkt p
  4. LEFT JOIN
  5. produkt_2_kategoria p2
  6. ON p2.produkt_id=p.produkt_id AND p2.main=1
  7. LEFT JOIN produkt_2_kategoria p_2_k WHERE p_2_k. kategoria_id = X
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
bo już łącze joinem z tą tabelą ale jakby z innego powodu.
A z jedną tabelą możesz się łączyć choćby i 1000 razy. Przykład podał już mmmmmmmmmm
A na przyszłość opisuj problem od razu to zaoszczędzisz kupę czasu...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
propage
post
Post #10





Grupa: Zarejestrowani
Postów: 330
Pomógł: 0
Dołączył: 25.01.2008

Ostrzeżenie: (0%)
-----


ok, to trochę pomogło przyśpieszyć zapytanie.
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #11





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


Pokaż PRAWDZIWE zapytanie i SHOW CREATE tabel, bo wierzyć mi się nie chce by "trochę pomogło"... Powinno dostać niezłego spida.

Ten post edytował mmmmmmm 16.05.2013, 14:07:41
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 19:17