Temat: [pytanie laika] Jak stworzyć prawidłowe zapytanie SELECT

Witam,
przyznam się, że moja wiedza nt. MySql jest trochę laicka, więc pytanie może wydać się banalne...

mam dwie tabele:
1) z wpisami
2) z informacją, jaki wpis jest wyróżniony i w jakim okresie

potrzebuję wyświetlić listę wpisów, z tym, że na początku chcę mieć wpisy, które są dziś wyróżnione.. posortowane według ilości punktów wyróżnienia i daty dodania wpisu

stworzyłem takie zapytanie:

SELECT o.*, (SELECT SUM(w.punkty) AS sumapunktow FROM w WHERE w.wpis_id=o.wpis_id AND (w.data_start<='2009-07-02' AND w.data_koniec>='2009-07-02') ) AS punkty FROM o,w WHERE kategoria_wpisu='12' GROUP BY wpis_id ORDER BY punkty DESC, o.data_dodania DESC

w bazie 'o' mam 300 tys. rekordów, w bazie 'w' 500 rekordów..
przy takiej formie SELECT czas wykonania polecenia wynosi... 60 s

Jak to inaczej napisać?
proszę o sugestie
w.
Irek Słonina

Irek Słonina programowanie, bazy
danych i linuksy

Temat: [pytanie laika] Jak stworzyć prawidłowe zapytanie SELECT

Bardzo brzydkim zwyczajem jest dawanie komuś kodu do analizy czy poprawek, który nie jest sformatowany. Jakkolwiek. Jak się nie chce można skorzystać np. z http://www.orafaq.com/utilities/sqlformatter.htm

Tak powinno być szybciej:


SELECT
o.*,
sumapunktow as punkty
FROM o
JOIN (
SELECT wpis_id, SUM(punkty) AS sumapunktow
FROM w
WHERE
data_start<='2009-07-02'
AND data_koniec>='2009-07-02'
GROUP BY
wpis_id
) AS win ON (win.wpis_id=o.wpis_id)

WHERE
kategoria_wpisu='12'
GROUP BY wpis_id
ORDER BY punkty DESC, o.data_dodania DESC
Janusz Skudrzyk

Janusz Skudrzyk Członek zarządu,
weblabs.pl

Temat: [pytanie laika] Jak stworzyć prawidłowe zapytanie SELECT

Wrzuć do phpmyadmina (albo w konsoli mysql):
Explain select ...
i wklej tutaj wynik
edit:
+ struktura tabel (jak w dziale php)Janusz Skudrzyk edytował(a) ten post dnia 02.07.09 o godzinie 23:02

Temat: [pytanie laika] Jak stworzyć prawidłowe zapytanie SELECT

Dziękuję za uwagi.. ale właśnie rozwiązałem problem...

zamiast:


...
FROM o,w
WHERE kategoria_wpisu = '12'
..


powinno być:


...
FROM o
WHERE kategoria_wpisu = '12'
..


czas zapytania 0,016 s
Michał Jarosz

Michał Jarosz Frontend Developer &
Team Leader

Temat: [pytanie laika] Jak stworzyć prawidłowe zapytanie SELECT

http://www.goldenline.pl/forum/bazy-danych/1019476/s/1...
Grzegorz G.

Grzegorz G. ASE / Systems
Architect, Syniverse

Temat: [pytanie laika] Jak stworzyć prawidłowe zapytanie SELECT

w.data_start<='2009-07-02' AND w.data_koniec>='2009-07-02'


I nigdy tak...TO_DATE musi być :-).

konto usunięte

Temat: [pytanie laika] Jak stworzyć prawidłowe zapytanie SELECT

Grzegorz G.:
w.data_start<='2009-07-02' AND
> > w.data_koniec>='2009-07-02'


I nigdy tak...TO_DATE musi być :-).

to zalezy od dialektu, może się zdarzyć że CAST('2009-07-02' as datetime)
Michał Jarosz

Michał Jarosz Frontend Developer &
Team Leader

Temat: [pytanie laika] Jak stworzyć prawidłowe zapytanie SELECT

W MySQL 5.x może być nawet w.data_start<=20090702
Grzegorz G.

Grzegorz G. ASE / Systems
Architect, Syniverse

Temat: [pytanie laika] Jak stworzyć prawidłowe zapytanie SELECT

Nie o składnię (dialekt) chodzi, tylko o porównywanie jabłek z gruszkami - DATE > VARCHAR. Implicit conversion to zło :-).
Marcin K.

Marcin K. Kredyty, back office

Temat: [pytanie laika] Jak stworzyć prawidłowe zapytanie SELECT

Grzegorz G.:
Implicit conversion to zło :-).

Rozwiniesz temat?
Paweł W.

Paweł W. java developer at
https://rozwoj-oprog
ramowania.pl

Temat: [pytanie laika] Jak stworzyć prawidłowe zapytanie SELECT

Marcin K.:
Grzegorz G.:
Implicit conversion to zło :-).

Rozwiniesz temat?

http://it.toolbox.com/blogs/oracle-guide/minitip-10-im...

konto usunięte

Temat: [pytanie laika] Jak stworzyć prawidłowe zapytanie SELECT

Marcin K.:
Grzegorz G.:
Implicit conversion to zło :-).

Rozwiniesz temat?

niejednoznacznośc zapisów skróconych w zalezności od języka w którym sie dokonuje konwersji niejawnej
Marcin K.

Marcin K. Kredyty, back office

Temat: [pytanie laika] Jak stworzyć prawidłowe zapytanie SELECT

Dzięki za linka. Przeczytałem razem z komentarzami, które rzucają dodatkowe światło na słuszne, ale jednak nieco jednostronne podejście do tematu autora :)

Następna dyskusja:

Jak stworzyć instalkę MySQL




Wyślij zaproszenie do