![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Hejka, mam taką zagwostkę:
Jest sobie zapytanie:
No i ładnie mi bierze index FK_TOPIC. Explain: Cytat idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra Wziął mi pod uwagę dwa rekordy.1 SIMPLE f_post ref FK_TOPIC FK_TOPIC 4 const 2 Using where; Using filesort Daję teraz to w podzapytanie:
I już mi nie uwzględnia FK_TOPIC jako klucza Cytat idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra 1 PRIMARY <derived2>ALL(NULL)(NULL)(NULL)(NULL)2Using where 2 DERIVED f_post ALL FK_TOPIC FK_TOPIC 4 118 Using filesort Bierze pod uwagę wszystkie rekordy (118) O co chodzi?Mam chwilowe zaćmienie związane z poszukiwaniem samochodu (IMG:style_emoticons/default/smile.gif) ps: wystarczy ze wywalę ORDER BY ID asc i już gra jak ta lala, szuka po dwóch rekordach. Czemu normalnie dziala niezależnie od order by, a w podzapytaniu trzeba wywalic order by by poszło normalnie |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
@wookieb bo widzisz, zależy jak leży (IMG:style_emoticons/default/winksmiley.jpg)
No to dodajmy to pole, co się teraz dzieje: mamy pole POSITION. Dodajemy nowy post, sprawdzamy jaka jest pozycja ostatniego i dla nowego ustalamy o 1 większą. Ok Usuwamy post ze środka - musimy wyliczyć na nowo pozycje dla wszystkich postów leżących za usuniętym - też żaden problem. Chcemy pobrać pozycję posta - jedno proste zapytanie bez babrania się w podzapytania. = Same plusy. Ale...... co, gdy w przyszłości będę chciał rozwinąć forum i dodać np. możliwość okreslania przez użytkowników, w jakiej kolejności chcą wyświetlać posty (rosnąca,malejąca)? Nie będę mógł już skorzystać z POSITION, bo ono będzie tylko dla ASC. A użytkownik wybierze sobie DESC i zonk. Rozwiązaniem byłoby dodanie pola POSITION_DESC. W sumie to też nie głupi pomysł. Widzicie jeszcze jakieś przypadki, gdzie POSITION było by złe? jakieś inne wyświetlanie postów? Zazwyczaj to raczej posty wyświetla się po dacie. Z drugiej strony to podzapytanie co tu przedstawiłem też działa szybko. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 11.10.2025 - 18:00 |