![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 1 Dołączył: 22.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Chce troche zoptymalizowac widok. Poniżej podaje część kodu.
Mam takie pytanie, posiadam kolo 10 takich bloków w tym kodzie:
różnią się tylko "description" i na końcu "AS something". Da się to jakoś skrócić, żeby nie trzeba było tak co chwile powtarzać tego selecta? Czym więcej takich selectów, tym wolniej mi się ten widok otwiera... |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 61 Dołączył: 20.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
Rozumiem, ze chcesz zachować strukturę kolumn w widoku taka, jaka jest. W takim razie pozostaje optymalizowanie tych drobnych SELECTów.
Na początek uszereguj warunki w WHERE od najbardziej zawężających. Czyli jeśli masz 1 000 000 rekordów, description = 'WIN Version' robi ci z tego 100 000 rekordów, a row_id = vw.row_id 100, to row_id = vw.row_id ma się znaleźć przed description = 'WIN Version' Poza tym nie jestem pewien, czy
nie wykonuje ci się dla dla każdego wiersza zapytania SELECT DISTINCT VALUE (...), pomimo tego, że nie ma z tym zapytaniem nic wspólnego (ma z tym głównym SELECTEm). Masz przez to 3-krotne zagnieżdżenie SELECTA na tej samej tabeli. Najlepiej odpal sobie profiler zapytań i sprawdź gdzie najwięcej czasu tracisz. MySQL na przykład ma EXPLAIN oraz http://dev.mysql.com/tech-resources/articl...y-profiler.html i pewnie jakieś profilery firm trzecich. Profiler pokaże ci też, czy nie zapomniałeś gdzieś indeksu założyć. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 1 Dołączył: 22.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
ok, za chwile się za to zabiorę, uporzdkuje te warunki where. Głównie rozchodziło mi się, czy da się jakoś scalić te dwa bloki z selectami (jakimiś join'ami albo jakoś):
P.S. jak to przerobić, żeby selecty były podwójnie zagnieżdżone, a nie tak jak teraz potrójnie; jak się pozbyć tego:
da się to tylko raz zdefiniować wcześniej? Tak średnio znam się na SQLu, ale jakas wiedzę tam mam... Ten post edytował xyxy 14.09.2010, 13:55:41 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.09.2025 - 23:20 |