Запитання з тегом «optimization»

У контексті бази даних оптимізація означає процес оптимізатора запитів, що вибирає ефективний план фізичного виконання.

2
Чи займає значення порожнього стовпця той самий простір для зберігання, що і значення заповненого стовпця?
У мене є таблиця з 2 стовпцями. Тип обох стовпців встановлений уvarchar(38) . Якщо я створять рядок із порожнім значенням для одного з стовпців, чи займе це місце для зберігання, як якщо б значення не було порожнім? Іншими словами, чи резервує MySQL місце для зберігання стовпця (залежно від його типу), …

2
Як пришвидшити вибір чітких?
У деяких даних про часовий ряд у мене є простий вибір: SELECT DISTINCT user_id FROM events WHERE project_id = 6 AND time > '2015-01-11 8:00:00' AND time < '2015-02-10 8:00:00'; І це займає 112 секунд. Ось план запитів: http://explain.depesz.com/s/NTyA У моїй програмі потрібно зробити багато різних операцій і вважається таким. …

1
Коли можна предикати SARGable висунути в CTE або в похідну таблицю?
Мішок з піском Під час роботи на високому якість Блог Posts®, я натрапив на якому - то оптимізатор поведінки я знайшов дійсно сказ цікавого. У мене не одразу є пояснення, принаймні, не одне, з чим я задоволений, тому я вкладаю його на випадок, якщо хтось розумний з’явиться. Якщо ви хочете …

2
Приєднуйтесь до запиту, який займає 11 хвилин для роботи на таблиці 300 000 рядків
Нижче на запит потрібно більше 11 хвилин. 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
Чому мій запит EXISTS виконує сканування індексу замість індексу?
Я працюю над оптимізацією деяких запитів. Для запиту нижче: 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
Чому оцінки рядків SQL Server змінюються, коли я додаю підказку про приєднання?
У мене є запит, який поєднує декілька таблиць і виконує досить погано - оцінки рядків відключаються (в 1000 разів) і вибирається об'єднання вкладених циклів, в результаті чого відбувається багаторазове сканування таблиці. Форма запиту досить проста, виглядає приблизно так: SELECT t1.id FROM t1 INNER JOIN t2 ON t1.id = t2.t1_id LEFT …

2
Індекс на збереженому обчисленому стовпчику не можна знайти
У мене є таблиця, що називається Address, що має збережений обчислюваний стовпчик Hashkey. Стовпець є детермінованим, але не точним. На ньому є унікальний індекс, який неможливо шукати. Якщо я запускаю цей запит, повертаю первинний ключ: SELECT @ADDRESSID= ISNULL(AddressId,0) FROM dbo.[Address] WHERE HashKey = @HashKey Я отримую цей план: Якщо я …

1
Чому оператор агрегату використовується після унікального сканування індексу
У мене є таблиця з унікальним відфільтрованим індексом для ненульових значень. У плані запитів є використання різних. Чи є для цього причина? USE tempdb CREATE TABLE T1( Id INT NOT NULL IDENTITY PRIMARY KEY ,F1 INT , F2 INT ) go CREATE UNIQUE NONCLUSTERED INDEX UK_T1 ON T1 (F1,F2) WHERE …

3
Індекси для SQL запиту з умовою WHERE та GROUP BY
Я намагаюся визначити, які індекси використовувати для запиту SQL з WHEREумовою, а GROUP BYякий зараз працює дуже повільно. Мій запит: 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 Наразі таблиця має 32 000 000 рядків. Час виконання запиту значно збільшується, коли …

2
Як оптимізувати T-SQL-запит за допомогою плану виконання
У мене є SQL-запит, який я витратив останні два дні, намагаючись оптимізувати, використовуючи пробну помилку та план виконання, але безрезультатно. Вибачте, будь ласка, за це, але я опублікую весь план виконання тут. Я доклав зусиль, щоб назви таблиць і стовпців у плані запитів та виконання були загальними як для стислості, …

3
Оптимізація ієрархії CTE
Оновлення нижче У мене є таблиця облікових записів із типовою архітектурою акаунтів acct / parent, яка представляє ієрархію облікових записів (SQL Server 2012). Я створив ВИДІЛ за допомогою CTE, щоб згорнути ієрархію, і в цілому це працює чудово і за призначенням. Я можу запитати ієрархію на будь-якому рівні та легко …

3
Чому існують відмінності в плані виконання між OFFSET… FETCH та старою схемою ROW_NUMBER?
Нова OFFSET ... FETCHмодель, представлена ​​разом із SQL Server 2012, пропонує просте та швидше підключення сторінки. Чому взагалі є якісь відмінності, враховуючи, що дві форми є семантично однаковими і дуже поширеними? Можна припустити, що оптимізатор розпізнає обидва і оптимізує їх (тривіально) в повній мірі. Ось дуже простий випадок, коли OFFSET …


1
Чому кількість виконаних кластерних сканерів з індексом настільки велика?
У мене є два подібних запити, які генерують один і той же план запитів, за винятком того, що один план запитів виконує кластерне сканування індексів 1316 разів, а інший виконує його 1 раз. Єдина відмінність між двома запитами - це різні критерії дати. Тривалий запит фактично звужує критерії дати та …

2
Оптимізація: переміщення оголошень змінних у верхній частині вашої процедури
Працюючи над оптимізацією деяких збережених процедур, я сів з DBA і пройшов кілька збережених процедур з високою блокувальністю та / або високою активністю читання / запису. Одне згадане DBA було те, що я повинен оголосити всі змінні (особливо TABLEті) у верхній частині збереженої процедури, щоб уникнути перекомпіляцій. Це перший, який …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.