Pytania otagowane jako optimization

W kontekście bazy danych optymalizacja odnosi się do procesu optymalizatora zapytań, który wybiera efektywny fizyczny plan wykonania.



1
Kiedy predykaty SARGable mogą zostać wprowadzone do CTE lub tabeli pochodnej?
Worek z piaskiem Pracując na Top Quality Blog Posts® natknąłem jakiegoś zachowania optymalizatora znalazłem naprawdę irytujące interesujące. Nie mam od razu wyjaśnienia, przynajmniej takiego, z którego jestem zadowolony, więc umieszczam je tutaj na wypadek, gdyby pojawił się ktoś inteligentny. Jeśli chcesz śledzić, możesz pobrać zrzut zrzutu danych przepełnienia stosu z …

2
Dołącz do zapytania zajmującego 11 minut, aby uruchomić tabelę 300 000 wierszy
Wykonanie poniższego zapytania zajmuje ponad 11 minut. SELECT `c`.*, `e`.`name` AS `employee_name`, `e`.`emp_no`, `d`.`code` AS `department_code`, IF(ew.code IS NOT NULL, ew.code, egw.code) AS shift_code, IF(ew.code IS NOT NULL, ew.time_in_from, egw.time_in_from) AS time_in_from, IF(ew.code IS NOT NULL, ew.time_out_to, egw.time_out_to) AS time_out_to, IF(ew.code IS NOT NULL, ew.next_day, egw.next_day) AS next_day FROM `tms_emp_badge_card` …

3
Dlaczego moje zapytanie EXISTS wykonuje skanowanie indeksu zamiast wyszukiwania indeksu?
Pracuję nad optymalizacją niektórych zapytań. W przypadku poniższego zapytania SET STATISTICS IO ON; DECLARE @OrderStartDate DATETIME2 = '27 feb 2016'; DECLARE @OrderEndDate DATETIME2 = '28 feb 2016'; SELECT o.strBxOrderNo , o.sintOrderStatusID , o.sintOrderChannelID , o.sintOrderTypeID , o.sdtmOrdCreated , o.sintMarketID , o.strOrderKey , o.strOfferCode , o.strCurrencyCode , o.decBCShipFullPrice , o.decBCShipFinal , …

2
Dlaczego szacunki wierszy programu SQL Server zmieniają się, gdy dodam wskazówkę dotyczącą przyłączenia?
Mam zapytanie, które łączy kilka tabel i działa dość źle - oszacowania wierszy są znacznie (1000 razy) wyłączone, a połączenie zagnieżdżonych pętli jest wybrane, co powoduje wielokrotne skanowanie tabeli. Kształt zapytania jest dość prosty, wygląda mniej więcej tak: SELECT t1.id FROM t1 INNER JOIN t2 ON t1.id = t2.t1_id LEFT …

2
Indeks trwałej kolumny obliczeniowej nie jest widoczny
Mam tabelę o nazwie Address, która ma utrwaloną kolumnę obliczeniową o nazwie Hashkey. Kolumna jest deterministyczna, ale nieprecyzyjna. Ma unikalny indeks, którego nie można zobaczyć. Jeśli uruchomię to zapytanie, zwracam klucz podstawowy: SELECT @ADDRESSID= ISNULL(AddressId,0) FROM dbo.[Address] WHERE HashKey = @HashKey Dostaję ten plan: Jeśli wymuszę indeks, otrzymam ten jeszcze …


3
Indeksy dla zapytania SQL z warunkiem GDZIE i GROUP BY
Próbuję ustalić, które indeksy mają być używane w zapytaniu SQL z WHEREwarunkiem, a GROUP BYktóry działa obecnie bardzo wolno. Moje zapytanie: SELECT group_id FROM counter WHERE ts between timestamp '2014-03-02 00:00:00.0' and timestamp '2014-03-05 12:00:00.0' GROUP BY group_id Tabela ma obecnie 32 000 000 wierszy. Czas wykonania zapytania znacznie wzrasta, …

3
Optymalizacja hierarchii CTE
Zaktualizuj poniżej Mam tabelę kont o typowej architekturze kont acct / parent do reprezentowania hierarchii kont (SQL Server 2012). Stworzyłem WIDOK za pomocą CTE, aby wyrównać hierarchię, i ogólnie działa pięknie i zgodnie z przeznaczeniem. Mogę sprawdzać hierarchię na dowolnym poziomie i łatwo przeglądać gałęzie. Istnieje jedno pole logiki biznesowej, …


3
Dlaczego istnieją różnice w planie wykonania między OFFSET… FETCH a starym schematem ROW_NUMBER?
Nowy OFFSET ... FETCHmodel wprowadzony wraz z SQL Server 2012 oferuje proste i szybsze stronicowanie. Dlaczego w ogóle istnieją jakiekolwiek różnice, biorąc pod uwagę, że te dwie formy są semantycznie identyczne i bardzo powszechne? Zakłada się, że optymalizator rozpoznaje oba i optymalizuje je (trywialnie) w pełni. Oto bardzo prosty przypadek, …

2
„Kopiowanie do tabeli tmp” bardzo wolno
Oto mój przykład zapytania: SELECT nickname, CASE class_id WHEN 1 THEN 'Druid' WHEN 2 THEN 'Necromancer' WHEN 3 THEN 'Mage' WHEN 4 THEN 'Priest' WHEN 5 THEN 'Warrior' WHEN 6 THEN 'Stalker' WHEN 7 THEN 'Paladin' WHEN 8 THEN 'Psionic' END class_name, ROUND(AVG(level),2) level, ROUND(AVG(tabard_id),2) tabard, CASE rank_id WHEN 1 …

1
Dlaczego liczba wykonań indeksu klastrowanego jest tak wysoka?
Mam dwa podobne zapytania, które generują ten sam plan zapytań, z tym wyjątkiem, że jeden plan zapytań wykonuje skanowanie indeksu klastrowanego 1316 razy, podczas gdy drugi wykonuje go 1 raz. Jedyną różnicą między tymi dwoma zapytaniami są różne kryteria daty. Długotrwałe zapytanie faktycznie zawęża kryteria daty i wycofuje mniej danych. …

2
Optymalizacja: przenoszenie deklaracji zmiennych na szczyt procedury
Pracując nad optymalizacją niektórych procedur przechowywanych, usiadłem z DBA i przeszedłem niektóre procedury przechowywane z wysoką aktywnością blokowania i / lub dużą aktywnością odczytu / zapisu. Jedną rzeczą, o której wspominał DBA było to, że powinienem zadeklarować wszystkie zmienne (zwłaszcza TABLEte) na górze procedury składowanej, aby uniknąć ponownej kompilacji. To …

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.